麻烦老师帮我看一下代码,为何下载的文件总是0字节?
function download_file($filename,$allowext=array('jpg','jpeg','png','zip','rar','pdf')){
//判断文件是否存在是否可读
if (!file_exists($filename)||!is_readable($filename)) {
return false;
}
$filesize=filesize($filename);
//
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:".$filesize);
header('Content-Disposition: attachment; filename=moon_'.basename($filename));
//如果请求文件在允许下载类型内,则输出文件
if (!in_array(basename($filename),$allowext)) {
return false;
}
$buffer=1024;
$sum_buffer=0;
$handle=fopen($filename,'rb');
while (!feof($handle) && $sum_buffer<$filesize) {
echo fread($handle,$buffer);
$sum_buffer+=$buffer;
}
fclose($filename);
exit;
}
正在回答 回答被采纳积分+1
你好,如果想控制文件大小,rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。建议使用r方式打开文件
代码参考如下:
<?php header("Content-type:text/html;charset=utf-8"); // $file_name="cookie.jpg"; $file_name="test.png"; //用以解决中文不能显示出来的问题 //$file_name=iconv("utf-8","gb2312",$file_name); $file_path=__DIR__."/test.png"; //首先要判断给定的文件存在与否 if(!file_exists($file_path)){ echo "没有该文件文件"; return ; } $handle=fopen($file_path,"r"); $filesize=filesize($file_path); //下载文件需要用到的头 Header("Content-type: application/octet-stream"); Header("Accept-Ranges: bytes"); Header("Accept-Length:".$filesize); Header("Content-Disposition: attachment; filename=".$handle); $buffer=1024; $file_count=0; //向浏览器返回数据 while(!feof($handle) && $file_count<$filesize){ $file_con=fread($fp,$buffer); $file_count+=$buffer; echo $file_con; } fclose($handle); ?>
如果解决您的问题请采纳,祝学习愉快!
你好,建议参考如下:
<?php download_file('Openssl.pdf','pdf'); function download_file($filename,$allowext=array('jpg','jpeg','png','zip','rar','pdf')) { //判断文件是否存在是否可读 if (!file_exists($filename) || !is_readable($filename)) { return false; } $filesize = filesize($filename); $file_name=basename($filename); // header("Content-type:application/octet-stream"); header("Accept-Ranges:bytes"); header("Accept-Length:" . $filesize); header('Content-Disposition: attachment; filename=moon_' .$file_name); $handle = fread($allowext,$filesize); fclose($filename); } ?>
解决您的问题请采纳,祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 626 份
- 解答问题 4930 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星