2009-09-08 75 views
1

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

例如从test.com/test.zip

  • 要么

    1. 下载文件的文件缓存到磁盘或立即流式传输到用户。

    如果可能的话我怎么能做到这一点使用卷曲或我怎么能做到这一点使用普通的PHP(无需额外的库)

  • +0

    从test.com执行的初始下载是否由运行在test.com上的PHP执行?由于PHP是服务器端的,它似乎非常适合处理运行它的服务器的下载。 “将下载的文件上传到用户”并不清楚你的意思。 – pavium 2009-09-08 05:40:09

    回答

    4

    使用echo(file_get_contents())会首先将文件加载到内存中,然后echo会将其输出给用户 - 因此在文件传递给用户之前会有一段延迟,并且您有可能触及PHP的内存限制。

    与此相反,readfile()会在用户从远程源下载后立即向用户提供块,然后在收到它们时将其丢弃。它将使用更少的内存,并且下载将更快开始。

    header('Content-Type: application/zip'); 
    readfile('http://test.com/test.zip'); 
    
    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文件。

    +0

    谢谢,这正是我所需要的,只要我测试它会标记为完整 – RC1140 2009-09-08 06:00:17

    相关问题