我需要使用PHP下载文件,然后将下载的文件上传给用户。
e.g。
从test.com/test.zip下载文件
将文件缓存到磁盘或立即流式传输给用户。
如果可能的话我怎么能用curl做这个呢?或者我怎么能用普通的PHP(没有额外的库)来做这件事
答案 0 :(得分:4)
使用echo(file_get_contents())会先将文件加载到内存中,然后echo将其输出给用户 - 因此在向用户传递文件之前会有一段延迟,并且您可能会遇到PHP的内存限制。
相比之下,readfile()会在从远程源下载后立即向用户提供块,然后在收到它们时将它们丢弃。它将使用更少的内存,下载将更快启动。
header('Content-Type: application/zip');
readfile('http://test.com/test.zip');
答案 1 :(得分:3)
header("Content-Type: application/zip"); // correct? not sure.
echo(file_get_contents("http://test.com/test.zip"));
除非我错过了你想要做的事情......如果你想要缓存它,你可以分开调用,并将file_get_contents
的结果存储在某个地方。此调用的结果是文件作为字符串。 echo
只是将其再次打印回浏览器。 header
用于告诉浏览器该文件实际上是一个zip文件,而不是一个html文件。