php大文件下载文件不完整,解决php无法下载大文件的方法

解决php无法下载大文件的方法

发布时间:2020-08-24 14:25:47

来源:亿速云

阅读:68

作者:小新

解决php无法下载大文件的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!php无法下载大文件的解决办法:首先找到并打开“php.ini”文件;然后将“memory_limit”设置为1024M;接着将数据输出到客户端浏览器中即可。

5760decae90711aa30d3f46efd74a959.png

解决使用PHP无法下载大文件的问题

在实际应用中,使用PHP的fread()函数读取服务器文件会有大小限制。当服务器文件大小超过一定量时(128M?),客户端浏览器无法下载文件。是因为配置文件php.ini里的memory_limit的限制吗?

将memory_limit设置为1024M后,测试一个180M的文件,发现问题依旧,代码:header('content-type:application/octet-stream');

header('accept-ranges: bytes');

header('content-length: '.filesize($filePath));

header('content-disposition:attachment;filename='.$fileName);

$fp = fopen($filePath, "r");

echo fread($fp, filesize($filePath));

fclose($fp);

上面的读取方式是一次性将数据输出到客户端浏览器中,难道跟这有关系?试着从文件中一行一行读取:header('content-type:application/octet-stream');

header('accept-ranges: bytes');

header('content-length: '.filesize($filePath));

header('content-disposition:attachment;filename='.$fileName);

$fp = fopen($filePath, "r");

while(!feof($fp)) {

echo fgets($fp, 4096);

}

fclose($fp);

啊哈!没有问题了。

感谢各位的阅读!看完上述内容,你们对解决php无法下载大文件的方法大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注亿速云行业资讯频道。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解决文件下载时的跨域问题,可以在服务器端设置跨域资源共享(CORS)头部。具体步骤如下: 1. 在服务器端的 PHP 脚本中,设置响应头部,允许指定的域名跨域访问该资源。例如,以下代码表示允许来自 example.com 域名的请求跨域访问该资源: ```php header('Access-Control-Allow-Origin: example.com'); ``` 2. 如果需要允许多个域名跨域访问该资源,可以使用通配符 `*`,例如: ```php header('Access-Control-Allow-Origin: *'); ``` 但是使用通配符可能会存在安全风险,因为它允许任何域名都可以跨域访问该资源,所以建议仅允许指定的域名访问。 3. 如果需要允许跨域请求发送自定义请求头部,可以使用 `Access-Control-Allow-Headers` 字段,例如: ```php header('Access-Control-Allow-Headers: Authorization, X-Requested-With'); ``` 上述代码表示允许跨域请求发送 `Authorization` 和 `X-Requested-With` 两个自定义请求头部。 4. 如果需要允许跨域请求发送不同的 HTTP 方法,可以使用 `Access-Control-Allow-Methods` 字段,例如: ```php header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); ``` 上述代码表示允许跨域请求发送 `GET`、`POST`、`PUT` 和 `DELETE` 四种 HTTP 方法。 需要注意的是,以上代码需要放在文件下载PHP 脚本的开头部分,确保在下载文件之前设置响应头部。此外,还需要确保 PHP 脚本没有其他输出,否则会导致设置响应头部失败。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值