如何解决php大文件无法下载的问题

php大文件无法下载的解决办法:首先获得要下载的文件名;然后通过“set_time_limit(0);”方法设置脚本的最大执行时间;最后清除缓存即可。

如何解决php大文件无法下载的问题

推荐:《PHP视频教程》

最近在做一个照片下载系统,需要把顾客相片下载下来,然后进行ps修图,但是下载的文件要求是相机的原始文件cr2的文件。这种类型的文件一般比较大,一般一张相片的太小是30M左右,当时下载完成后,也没注意,现在反应系统下载下来的照片,photoshop 无法打开,一开始以为是软件没有安装camera Raw 插件,后来安装了后,发现还是打不开,最后把下载下来的图片和上传前的图片一对比,下载的照片比原图小很多,这时发现很可能出现下载图片不完整的现象,一顿百度搜索,发现原来是php脚本执行时间的问题。一般默认是30秒,设置个配置后解决问题。 

set_time_limit(0); 代表不限制时间,好了下面贴出自己的下载代码。这个函数大家可以直接使用

//fname为要下载的文件名//$fpath为下载文件所在文件夹,默认是downlodfunction download($fpath="download/"){    //获得要下载的文件名    $pathinfo=pathinfo($fpath);     $filename=$pathinfo['filename'].'.'.$pathinfo['extension'];      //避免中文文件名出现检测不到文件名的情况,进行转码utf-8->gbk//    $filename=iconv('utf-8', 'gb2312', $fname);    $downpath=$fpath;    if(!file_exists($downpath)){//检测文件是否存在        echo "文件不存在!";        die();    }    //    //设置脚本的最大执行时间,设置为0则无时间限制    set_time_limit(0);    $fp=fopen($downpath,'rb');//只读方式打开    $filesize=filesize($downpath);//文件大小//    echo $filesize;//    die;    //返回的文件(流形式)    header("Content-type: application/octet-stream");    //按照字节大小返回    header("Accept-Ranges: bytes");    //返回文件大小    header("Accept-Length: $filesize");    //这里客户端的弹出对话框,对应的文件名    header("Content-Disposition: attachment; filename=".$filename);    //清除缓存    ob_clean();    flush();    //设置分流    $buffer=4096;    //来个文件字节计数器    $count=0;    while(!feof($fp)&&($filesize-$count>0)){        //设置文件最长执行时间        set_time_limit(0);        $data=fread($fp,$buffer);        $count+=$data;//计数        echo $data;//传数据给浏览器端    }     fclose($fp); }

登录后复制

  希望能帮助大家解决问题

立即学习“PHP免费学习笔记(深入)”;

以上就是如何解决php大文件无法下载的问题的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2120842.html

(0)
上一篇 2025年2月24日 18:47:49
下一篇 2025年2月23日 21:08:06

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何解决php-fpm 500错误的问题

    php-fpm500错误的解决办法:首先编辑“php.ini”并开启错误提示;然后编辑“php-fpm.conf”文件并添加“php_flag[display_errors]=on”;最后重启“php-fpm”即可。 推荐:《PHP视频教程…

    2025年2月24日
    200
  • php如何实现按条件查询

    php按条件查询的实现方法:首先调取之前封装好的类;然后利用关键词模糊查询;接着创建表单,将数据提交到当前页面,提取关键字查询;最后用PHP代码遍历表中元素,将关键字变为红色即可。 推荐:《PHP视频教程》 一、单条件查询,就是只有一个条件…

    2025年2月24日
    200
  • php如何实现删除提示信息

    php删除提示信息的实现方法:1、通过confirm方法实现删除提示;2、使用del_sure方法实现删除提示;3、通过confirmDel方法实现删除提示 推荐:《PHP视频教程》 php 简单删除提示 下面是别的网友整理的,大同小异。一…

    2025年2月24日
    200
  • 关于php设置https的问题

    php设置https的方法:首先设置“httpd.ini”并添加相关配置;然后将“httpd-ssl.conf”里面的“VirtualHost”配置完整路径;最后使http重定向到https即可。 推荐:《PHP视频教程》 设置https以…

    2025年2月24日
    200
  • php怎么调试错误

    php调试错误的方法:首先启动错误报告;然后使用print语句调试程序;最后通过前缀字符“@”屏蔽PHP脚本错误提示即可。 推荐:《PHP视频教程》 php错误调试 一、php错误级别 一般来说,php错误有三个级别:notice、warn…

    2025年2月24日
    200
  • 如何解决php文件名不能中文的问题

    php文件名不能中文的解决办法:首先将网页用utf-8编码和保存;然后将fopen里的文件名参数通过iconv函数单独进行编码即可避免中文文件名乱码。 推荐:《PHP视频教程》 php中fopen不能创建中文文件名文件的问题 之前网页的ch…

    2025年2月24日
    200
  • php 对象数组如何转json字符串

    php对象数组转json字符串的方法:首先创建PHP示例文件;然后创建一个数组;最后通过“json_encode($array);”方法将数组转化为json格式即可。 推荐:《PHP视频教程》 PHP把对象转化成json字符串 数组转jso…

    2025年2月24日
    200
  • php mysql如何实现分页

    php mysql实现分页的方法:首先打开相应的代码文件;然后通过mysql分页公式“Select * from table limit ($Page- 1) * $PageSize, $PageSize”实现分页即可。 推荐:《PHP视频…

    2025年2月24日
    200
  • php 如何隐藏url

    php隐藏url的设置方法:首先找到并打开“.htaccess”文件;然后配置规则为“RewriteEngine on RewriteRule ^RegStuds/ regstuds.php”并保存即可。 推荐:《PHP视频教程》 具体问题…

    2025年2月24日
    200
  • nginx php mysql 安装配置的方法

    nginx php mysql安装配置的方法:首先安装Nginx、PHP和MySql;然后修改nginx.conf配置;接着启动nginx;最后配置php-fpm即可。 推荐:《PHP视频教程》 序言 这次玩次狠得。除了编译器使用yum安装…

    2025年2月24日
    200

发表回复

登录后才能评论