小编典典

从 URL 下载文件到服务器

all

好吧,这个看起来很简单,而且确实如此。将文件下载到服务器所需要做的就是:

file_put_contents("Tmpfile.zip", file_get_contents("http://someurl/file.zip"));

只有一个问题。如果你有一个大文件,比如 100mb。然后,您将耗尽内存,并且无法下载文件。

我想要的是一种在下载文件时将文件写入磁盘的方法。这样,我可以下载更大的文件,而不会遇到内存问题。


阅读 222

收藏
2022-03-29

共1个答案

小编典典

自 PHP 5.1.0
起,通过传递流句柄作为参数file_put_contents()支持逐段编写:$data

file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));

从手册:

如果 data [即第二个参数] 是流资源,则该流的剩余缓冲区将被复制到指定文件。这与使用类似
stream_copy_to_stream()

2022-03-29