PHP文档下载后无法打开,“文件已损坏,无法打开”错误。
我用PHP开发了文档下载功能,但是下载的文件都不能打开报“文件已损坏,无法打开”错误。我将任何word或者excel文件上传到服务器,再用下面代码下载时,会出现文件损坏,无法打开的错误。同意尝试修复后,会打开修复的文件。我将下载后的文件用文本编辑器打开,看到文件结尾被插入0D0A,即回车换行。查上传的文件,没有问题,无论源文件还是服务器上的文件都可以正确打开,文件尾部也没有加上回车换行。经测试,这个回车换行是header插入的,应该是http定义的。问题是,上述代码很经典,网上几乎所有博客都在用,难道没有人有同样的问题,或者是我有没有理解的内容?请大牛指教!主要代码如下:
$file = fopen("$filepath", "rb");
$buffer=1024;
$file_size=filesize("$filepath");
$file_count=0; //计数器,计算发送了多少数据
header("Content-type: text/html; charset=utf-8");
header("content-type: application/octet-stream");
header("accept-ranges: bytes");
header("accept-length:".filesize($filepath));
header("content-disposition: attachment; filename="."$filename_utf");
header('Content-Transfer-Encoding: binary');
//输出文件内容 transfer out of content of file.
//读取文件内容并直接输出到浏览器 read file's content and immediate transfer to browser
while(!feof($file) or ($file_size>$file_count))
{
//如果文件还没读到结尾,且还有数据没有发送 check if it is not end of file and data has not delivered complete yet.
$senddata=fread($file,$buffer);
//读取文件内容到缓存区 add file's content to buffer
$file_count+=$buffer;
echo $senddata;
}
fclose($file);
$file = fopen("$filepath", "rb");
$buffer=1024;
$file_size=filesize("$filepath");
$file_count=0; //计数器,计算发送了多少数据
header("Content-type: text/html; charset=utf-8");
header("content-type: application/octet-stream");
header("accept-ranges: bytes");
header("accept-length:".filesize($filepath));
header("content-disposition: attachment; filename="."$filename_utf");
header('Content-Transfer-Encoding: binary');
//输出文件内容 transfer out of content of file.
//读取文件内容并直接输出到浏览器 read file's content and immediate transfer to browser
while(!feof($file) or ($file_size>$file_count))
{
//如果文件还没读到结尾,且还有数据没有发送 check if it is not end of file and data has not delivered complete yet.
$senddata=fread($file,$buffer);
//读取文件内容到缓存区 add file's content to buffer
$file_count+=$buffer;
echo $senddata;
}
fclose($file);
...全文
相关推荐
php下载excel无法打开的解决方法
php下载excel后无法打开的解决方法和注意事项,大家参考使用吧
php格式文件打开的四种方法
php文件格式怎么打开?要搞清楚php文件用什么打开,首先我们来看php文件是什么文件,PHP是一个网页脚本,文件后缀名为.php,如下图: 但不同于html xml 标签语言,直接可以通过浏览器打开,php文件需要有PHP的运行环境才可以访问和打开,如果只是编辑PHP文件,只需要用: php文件打开方式一:用记事本打开 右击.php文件,选择记事本打开,就可以看到文件代码啦! php文件打开方式二:用Dreamweaver打开 Dreamweaver是网页编辑器,比较流行的网站开发工具,你可以直接把文件拖进去就可以打开php文件了 php文件打开方式三:Notepad++工具打开 也是代
PHP通过CURL下载文件
PHP通过CURL下载文件
PHP文件怎么打开.docx
PHP文件怎么打开.docx
网站制作资料zip损坏怎么办?从EOCD错误到完整解压预览全流程解析
在网站开发与素材交付场景中,ZIP压缩包是最常见的文件传输形态,但其依赖包尾的EOCD(中央目录结尾标记)索引表,一旦网络中断或存储异常就极易出现“找不到EOCD”等损坏错误。面对这类问题,先核对文件大小、再用WinRAR或7-Zip执行完整性测试,能有效定位是传输截断还是分包缺失。同时,分卷压缩包(如z01文件)的正确合并与解压逻辑、杀毒软件白名单设置,也是保障源码完整可用的关键前置操作。该套排查思路对网站源码交接、动态项目部署、素材打包分发等场景均有直接参考价值。本文以“美食美刻”网站制作资料包为案例,


基础编程
