我尝试使用PHP归档大文件并将其发送到浏览器进行下载。问题是文件位于远程计算机上,获取它的唯一方法是通过HTTP。所以想象这是我的文件:https://dropboxcontent.com/user333/3yjdsgf/video1.mp4
它是一个直接链接,我可以使用wget下载文件,或卷曲任何东西。当用户想要下载它时,我首先将文件提取到服务器,然后将其压缩然后发送给用户。好吧,如果文件非常大,用户必须坐在那里等待服务器下载它,然后才能在浏览器中看到下载对话框。有没有办法让我开始下载文件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(' big / hello.mp4',$ f);
如果文件非常大,问题是行$f = file_get_contents("https://dropboxcontent.com/user333/3yjdsgf/video1.mp4");
需要太长时间。
答案 0 :(得分:0)
根据Touch Cat Digital Inc原帖的评论中的建议,我在这里找到了答案:https://stackoverflow.com/a/6914986/1927991
远程文件的分块流是答案。非常聪明。