我写了一个简单的php来从DB加载一些二进制数据然后输出到客户端。
$sql="select FightPlayEnd from ZMTXLogic.FightLog where ID=".addslashes($id);
$result=$db->query($sql);
if($db->num_rows($result)>0)
{
$row = mysql_fetch_assoc($result);
$nByteCount = mb_strlen($row["FightPlayEnd"], '8bit');
//echo $nByteCount;
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:".$nByteCount);
header("Content-Disposition:attachment;filename=FightPlayEnd.bin");
header( "Content-type: application/octet-stream");
echo $row["FightPlayEnd"];
}
问题是从IE获取的数据与原始二进制数据不同但添加了 EF BB BF(在UltraEdit中查看)在标题处,0D 0A 0D 0A在结尾处。这有什么问题?
答案 0 :(得分:4)
0D 0A 0D 0A
只是\r\n\r\n
,即两个换行符。
EE BB BF
是字节顺序标记。它标志着UTF-8编码。
修改(参见评论):
您的脚本输出可能超出预期(特别是那些\r\n\r\n
)。
您需要在开始输出数据(ob_clean()
)之前清理输出缓冲区,然后在回声后立即退出。