当前位置: 首页 > 面试题库 >

使用PHP下载文件,而不是大文件上工作?

王成化
2023-03-14
问题内容

我正在使用php下载文件,而不是在新窗口中打开文件本身。对于较小的文件似乎可以正常工作,但对于较大的文件则无法工作(我需要在大型文件上使用)。这是我必须下载文件的代码:

function downloadFile($file) {   
    if (file_exists($file)) {         
        //download file
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: '.filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;   
    };    
};

但是,当我尝试下载大文件(例如265mb)时,浏览器告诉我找不到文件吗?文件一定在服务器上,脚本对于较小的文件也可以正常工作。有什么方法可以下载类似于我已有的大文件?


问题答案:

PHP对脚本可以运行多长时间以及可以使用多少内存有限制。脚本可能在完成之前就已超时,或者通过读取大文件而占用了过多的内存。

尝试调整中的max_execution_timememory_limit变量php.ini。如果您无权访问php.ini,请尝试set_time_limit)和/或ini_set函数。



 类似资料:
  • 我将nginx作为带有PHP-fpm的web服务器。我可以成功地看到我的网站使用http,但如果我使用https,我将下载索引页面,页面将不会显示。 我的nginx.conf 和conf.d/default。形态

  • 问题内容: 我正在将站点安装在Droplet中(数字海洋)。我在使用PHP正确安装NGINX时遇到问题,但是当我尝试运行一些.php文件正在下载…例如,它正在工作,但是…如果我进入主目录,它将下载我的index.php:/ 任何的想法? 我的/ etc / nginx / sites-available / default …评论其他“位置”(#) 问题答案: 尝试这个: 编辑 取消注释两个侦听行

  • 我正在使用ChromeWeb驱动程序2.10 chromedriver_win32。使用SeleniumWebDriver 2.31压缩。2. 启用详细日志记录后,似乎期望的能力(https://sites.google.com/a/chromium.org/chromedriver/capabilities)传递得很好, 但Chrome Web驱动程序正在播放*。mp4而不是下载。 我尝试过如何

  • 那么这里有什么解决方案可以使用php在线阅读excel或google电子表格呢? 更新: 建议@adyson使用相同的头来获取PHP下载的数据。 谢谢。

  • 问题内容: 我需要使用curl下载远程文件。 这是我的示例代码: 但是它不能处理大文件,因为它首先读取内存。 是否可以将文件直接流式传输到磁盘? 问题答案:

  • 我们有一个运行在Linux上的Weblogic服务器,有多个受管服务器。我所关心的托管服务器的最大堆大小为1024MB。该服务器上部署了多个应用程序。其中一个应用程序处理来自REST api的响应来下载250MB的文件。对于大于50 MB的文件,有时没有问题,但有时服务器会因OOM错误而崩溃。以下是我的代码: 由于存在内存问题,我尝试采用InpuStream方法。以下是更改后的代码: 此代码没有进