发布日期:2018-03-26
如何使用PHP从URL地址下载一个文件到服务器呢?+ 查看更多
如何使用PHP从URL地址下载一个文件到服务器呢?
+ 查看更多
发布日期:2018-02-24 17:44
分类:PHP
浏览次数:151
好吧,这是一个似乎很简单的问题。将文件下载到您的服务器所需要做的就是:
file_put_contents("Tmpfile.zip",file_get_contents("http://someurl/file.zip"));
只有一个问题。如果你有一个大文件,如100mb。然后,这将耗尽内存,无法下载文件。 我想要的是一种下载它的同时将它写入磁盘的方式。这样,我可以下载更大的文件,而不会遇到内存问题。
回答
从PHP 5.1.0开始,file_put_contents()支持通过传递一个stream-handle作为$data参数来逐个写入:
file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));
手册中写道:
如果data [第二个参数]是流资源,则该流的剩余缓冲区将被复制到指定的文件。这与使用stream_copy_to_stream()类似。
如果data [第二个参数]是流资源,则该流的剩余缓冲区将被复制到指定的文件。这与使用stream_copy_to_stream()类似。
PS:这也就意味着不管文件有多大(1G, 10G),您都无需再担心内存不够的问题。伟大的流技术!