麻烦老师帮我看一下代码,为何下载的文件总是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 份
- 解答问题 4928 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星