<?
header('Content-Type:text/html;charset=GB2312');
$path = "apache2.doc";
$handle = fopen ($path, "rb");
$contents = "";
do {
$data = fread($handle, 1);
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);
fclose ($handle);$conn=mssql_pconnect("DEVELOP-08","sa","123");
mssql_select_db("test",$conn);
$sql = "insert into test values('".$path."','".base64_encode($contents)."')"; //urlencode转换url编码 base64_encode base64_decode
echo $sql;
if(mssql_query($sql,$conn))
echo "ok";
else
echo "false";$result = mssql_query("select zd2 from test where zd1 = '$path'");
$myrow = mssql_fetch_array($result);$fp=fopen('apache3.doc','w');
fwrite($fp,base64_decode($myrow[0])); //urldecode恢复原编码
fclose($fp);
mssql_close();
?> 我想做的是读取doc文件后保存到数据库中,可是取出来的时候写回去的话就乱码或没有结果。试过urlencode,base64_encode,pack等方法都不行,哪位高手指点指点啊。
header('Content-Type:text/html;charset=GB2312');
$path = "apache2.doc";
$handle = fopen ($path, "rb");
$contents = "";
do {
$data = fread($handle, 1);
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);
fclose ($handle);$conn=mssql_pconnect("DEVELOP-08","sa","123");
mssql_select_db("test",$conn);
$sql = "insert into test values('".$path."','".base64_encode($contents)."')"; //urlencode转换url编码 base64_encode base64_decode
echo $sql;
if(mssql_query($sql,$conn))
echo "ok";
else
echo "false";$result = mssql_query("select zd2 from test where zd1 = '$path'");
$myrow = mssql_fetch_array($result);$fp=fopen('apache3.doc','w');
fwrite($fp,base64_decode($myrow[0])); //urldecode恢复原编码
fclose($fp);
mssql_close();
?> 我想做的是读取doc文件后保存到数据库中,可是取出来的时候写回去的话就乱码或没有结果。试过urlencode,base64_encode,pack等方法都不行,哪位高手指点指点啊。
那么出库时就用 base64_decode 进行解码你已经这样做了,问题可能在于数据库操作中数据被截断了
<?php
/**
CREATE TABLE `tbl_blob` (`id` int(10) NOT NULL auto_increment,
`content` mediumblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
*/
function asc2hex($str)
{
$return = '';
for($i = 0;$i < strlen($str); $i++)
{
$return .= sprintf("%02x",ord($str{$i}));
}
return $return;
}
$content = file_get_contents('a.doc');
$str = addslashes('0x' . asc2hex($content));
$db->query("replace into tbl_blob(id,content) values(1,{$str})");$thisinfo = $db->fetchone("select * from tbl_blob");w('aaa.doc',$thisinfo['content']);
?>