我正在尝试使用PHP存档一个大文件并将其发送到浏览器下载。问题是该文件位于远程机器上,获取它的唯一方法是通过HTTP。假设这是我的文件:https://dropboxcontent.com/user333/3yjdsgf/video1.mp4
它是一个直接链接,我可以使用wget或curl下载文件。当用户想要下载它时,我首先将文件获取到服务器,然后将其压缩,然后将其发送给用户。如果文件非常大,用户必须坐在那里等待服务器下载它,然后才能在浏览器中看到下载对话框。是否有一种方法可以让我开始下载文件https://dropboxcontent.com/user333/3yjdsgf/video1.mp4
(假设我将其下载到本地/tmp/video.mp4
),同时开始放入存档并将其流式传输到用户的浏览器?
我使用这个库来压缩它:https://github.com/barracudanetworks/ArchiveStream-php
,它工作得很好,但是瓶颈仍然是将文件获取到服务器的本地文件系统。
$f = file_get_contents("https://dropboxcontent.com/user333/3yjdsgf/video1.mp4");$ zip -> add_file(大/hello.mp4, f)美元;
问题是$f = file_get_contents("https://dropboxcontent.com/user333/3yjdsgf/video1.mp4");
行太长,如果文件真的很大
根据Touch Cat Digital Inc原始帖子的评论,我在这里找到了答案:https://stackoverflow.com/a/6914986/1927991
远程文件的块流是答案。非常聪明。