首页 / PHP / 为啥下载图片总少几个字节
为啥下载图片总少几个字节
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为啥下载图片总少几个字节,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1877字,纯文字阅读大概需要3分钟。
内容图文
![为啥下载图片总少几个字节](/upload/InfoBanner/zyjiaocheng/227/4d55730915bd4ad789fa5b342993a43d.jpg)
$file_name="Koala.jpg";
if(!file_exists($file_name)){
echo "文件不存在";
return;
}
$fp=fopen($file_name,"r");
$file_size=filesize($file_name);
echo $file_size;
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);
?>
------解决思路----------------------
错误原因:
你用文本方式打开了二进制文件
这个问题图片处理经常遇到 要用
$file = fopen($file_name,"rb");
在操作二进制文件时如果没有指定 "b" 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。
------解决思路----------------------
跟我前段时间做的差不多,也是多几个字节,然后下载的图片打开失败
下面是解决办法,找了很久才搜到的
//代码之前(或之后)有输出,也可能被写入下载的文件中,所以下载的时候多出几个字节
//下载文件多出几个字节的解决方法是:使用ob_start();和ob_end_clean();来清除前面的输出;
ob_end_clean();
//http 下载需要的响应头
header("Content-type: application/octet-stream"); //返回的文件
header("Accept-Ranges: bytes"); //按照字节大小返回
header("Content-length: $file_size"); //返回文件大小
header("Content-Disposition: attachment; filename=".$name);//这里客户端的弹出对话框,对应的文件名
------解决思路----------------------
测试可以的,我只注释了 echo $file_size;
$file_name="maze.png";
if(!file_exists($file_name)){
echo "文件不存在";
return;
}
$fp=fopen($file_name,"r");
$file_size=filesize($file_name);
//echo $file_size;
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);
内容总结
以上是互联网集市为您收集整理的为啥下载图片总少几个字节全部内容,希望文章能够帮你解决为啥下载图片总少几个字节所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。