欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

为啥下载的文件会是损坏的额? 这是什么有关问题? 求大神什么的

程序员文章站 2022-06-13 12:39:16
...
为啥下载的文件会是损坏的额?? 这是什么问题??????? 求大神什么的
function f($file_name,$file_path){
$file_name=$_SERVER['DOCUMENT_ROOT'].$file_path.$file_name;
$file_path=iconv("utf-8","gb2312",$file_name);
if(!file_exists($file_path))
// if(!file_exists($file_name))
{
echo "不存在";
return ;
}
$fp=fopen($file_path,"r");
$file_size=filesize($file_path);

header("Content-type: application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:$file_size");
header("Content-Disposition: attachment;filename=".$file_name);
$buffer=1024;
while(!feof($fp))
{
$file_data=fread($fp,$buffer);
echo $file_data;
}
fclose($fp);
}
f("qq.jpg","/");
为啥下载的文件会是损坏的额??
为啥下载的文件会是损坏的额??
为啥下载的文件会是损坏的额??
为啥下载的文件会是损坏的额??
为啥下载的文件会是损坏的额??
------解决思路----------------------
经测试,没有问题。
------解决思路----------------------
迅雷什么的?有可能文件下载回来不完整
------解决思路----------------------
截个图看看。

另外,你是用什么打开的。代码运行环境是?
------解决思路----------------------
测试过,一切正常。
------解决思路----------------------
E/Apache/htdocs 目录下存在qq.jpg文件吗?
------解决思路----------------------
用记事本打开图片文件,看看有什么。
------解决思路----------------------
你的代码中有 $file_path=iconv("utf-8","gb2312",$file_name);
表示你的 php 工作在 window 系统中

而 window 系统是严格区分文本文件和二进制文件的
而你却用 $fp=fopen($file_path,"r"); 以文本方式打开二进制文件

于是,因为你违规了,所以得不到正确的结果

你需要用二进制方式打开二进制文件 $fp=fopen($file_path,"rb");

另外,你的 utf-8 编码的程序文件,需要以无 BOM 头的格式进行保存
为啥下载的文件会是损坏的额? 这是什么有关问题?  求大神什么的

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频