【问题标题】:How to setup PHP to be a "pipe" for downloads from another location?如何将 PHP 设置为从其他位置下载的“管道”?
【发布时间】:2011-01-04 22:07:18
【问题描述】:

我想设置一个 php 脚本并将其托管在我的服务器上,这样我就可以从其他位置下载文件,但让它看起来像是来自我的服务器。也许使用 curl 或 htacess。此外,我希望有一种方法可以让我的服务器处理带宽。那有意义吗?这可行吗?

-- 更新

有点像代理,但没有将文件下载到内存然后发送给客户端。

【问题讨论】:

  • 如果不进入内存,信息应该去哪里?显然你可以流式传输它 - 你不需要将所有下载的内容放在一块内存中。下载时,您可以将该响应发送给请求者。 . . .但在某些时候它必须通过你的服务器,这意味着它会被逐块存储到内存中。

标签: php apache .htaccess curl hosting


【解决方案1】:

感谢您的帮助...我知道我需要做什么,我将使用 mod_xsendfile。它允许您为文件所在的位置设置外部源,然后让用户在不知道文件实际位置的情况下下载文件。

【讨论】:

    【解决方案2】:

    我建议在您的网站上设置一个链接系统,例如 http://example.com/download.php?id=12,然后直接转发到远程文件,这样您就可以节省带宽,如果有人查看您页面上的链接,它会看起来喜欢它来自您的服务器。它仍然会在下载管理器中显示其他站点,但如果您尝试节省带宽,则需要付出很小的代价。

    【讨论】:

      【解决方案3】:

      您可以通过简单地将目标 url 传递给脚本、使用 file_get_contents()、curl 或其他文件函数打开 url 并回显数据来完成此操作。确保将 Content-Type 标头设置为“application/octet-stream”以强制浏览器保存文件而不是显示它。

      至于带宽:你必须处理它。如果您的服务器下载文件,它将耗尽带宽。它甚至会用完两次,因为它必须接收和发送数据。

      我不知道你为什么提到 htaccess,因为这与你的问题无关。

      【讨论】:

      • 我之所以提到 htaccess,是因为我想知道是否有办法使用 mod_rewrite 让它“看起来”像文件在我的服务器上,但实际上它只是连接到另一个位置.
      【解决方案4】:

      我还希望有办法让我的服务器处理带宽问题。这可行吗?

      没有。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多