大家好,现在我们的项目遇到了一个比较困扰的问题。使用readfile下载图片文件时,文件会文件首会比原来多出一位(0x0A)来,使用UEdit删除文件首的那个16进制位文件可正确读出。源代码如下:<?php
$file = 'test_img.bmp';if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>下载后的文件和原文件比较如下:
代码在以前的服务器上运行从未出现问题,但当我们的项目更换了运行支撑环境(操作系统/apache/php 版本均有可能不同),在网上查遍了所有的文档,无解决办法。求高手解决此问题,在此先感谢大家了!如有有效解决办法,将给您追加到200分结贴。
$file = 'test_img.bmp';if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>下载后的文件和原文件比较如下:
代码在以前的服务器上运行从未出现问题,但当我们的项目更换了运行支撑环境(操作系统/apache/php 版本均有可能不同),在网上查遍了所有的文档,无解决办法。求高手解决此问题,在此先感谢大家了!如有有效解决办法,将给您追加到200分结贴。
解决方案 »
- php的问题
- 从网站优化与推广突然转行PHP网站程序设计,请问合适吗?
- 请问怎样把http://url/a.php?file=x.zip改成http://url/x.zip 这样的访问方式呢?
- 居然有这种事。。。
- 如何连续抓取网页?
- 如果将别人机器上的cookie文件复制到我的电脑上(假设使用相同浏览器),是不是能够登录别人的账号呢?如何防范。
- ZendStudio调试的小白问题
- 请教!!怎么样才能定时打开某个页面或是执行某个函数
- 大家喜欢去TOM还是去sina看新闻?
- appserv 配置多站点
- 谁可以写个2级联动select 的例子 看看
- 用open-flash-chart作报表时遇到一个问题
//给你一段//$mime,文件类型
//$filename,这个不用说了吧
//$data 是你要输出的文件数据,你试试用 file_get_contents 来获得
if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE)
{
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Transfer-Encoding: binary");
header('Pragma: public');
header("Content-Length: ".strlen($data));
}
else
{
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
header("Content-Length: ".strlen($data));
} exit($data);
flush();把这两句去掉看看。
flush();去掉也是不行的,这个上面您还有其他的思路吗。
$file = 'test_img.bmp';很显然,您的 <?php 前有一个空行
更低级的就是你连 BOM 头都没有避讳