下载然后用PHP上传文件

时间:2009-09-08 05:32:11

标签: php

我需要使用PHP下载文件,然后将下载的文件上传给用户。

e.g。

  1. 从test.com/test.zip下载文件

  2. 将文件缓存到磁盘或立即流式传输给用户。

  3. 如果可能的话我怎么能用curl做这个呢?或者我怎么能用普通的PHP(没有额外的库)来做这件事

2 个答案:

答案 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文件。