readfile文件下载问题,如有有效解决办法,加分结贴

flex4 2012-02-11 04:55:12
大家好,现在我们的项目遇到了一个比较困扰的问题。使用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 版本均有可能不同),在网上查遍了所有的文档,无解决办法。求高手解决此问题,在此先感谢大家了!

如有有效解决办法,将给您加分结贴。
...全文
191 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
flex4 2012-02-21
  • 打赏
  • 举报
回复
感谢大家的答案,由于网络问题,前两天未能及时结贴,请谅解。

最终的解决办法是通过多次ob_clean及flush操作清空了缓冲区中打印的换行符\n。

由于我对积分规则不太了解,现在的帖子已经无法加到200分了,本贴子按100分结贴,不过还是要感谢大家的热心回复。祝福你们工作生活愉快。
libo_sina 2012-02-15
  • 打赏
  • 举报
回复
0a-换行符号-"\n";看下你们那个读取文件的编码是不是gbk的,有些文件含有bom头,建议看可否改为utf-8格式的;你看你们的读取文件里是否有换行符号;或者对读取的内容直接trim()一下呢
fxs_2008 2012-02-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 libo_sina 的回复:]

0a-换行符号-"\n";看下你们那个读取文件的编码是不是gbk的,有些文件含有bom头,建议看可否改为utf-8格式的;你看你们的读取文件里是否有换行符号;或者对读取的内容直接trim()一下呢
[/Quote]

看看你<?php 前或内有没空格或其他输出
asasdaf 2012-02-11
  • 打赏
  • 举报
回复
那既然知道,多出的字符串,就截取掉就好啦
LuciferStar 2012-02-11
  • 打赏
  • 举报
回复
楼上广告。。。

readfile读取的文件里是否有这个0a呢?

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧