有没有办法将远程文件流式传输为 "zipped" 而无需下载到服务器?

Is there a way to stream a remote file as "zipped" without downloading to server?

看看这个简单的代码

<?php
readfile('http://ovh.net/files/1Mio.dat');
?>

此代码与 link 一起是示例。

我的服务器就像一种代理一样工作。为用户显示远程原始文件。

我无法将文件下载到我的服务器,因为它太大了。 我无法保存到服务器,我无法对文件本身执行任何操作。

我需要并在互联网上搜索了所有关于文件格式(zip、rar、tar、gzip 等)的文件格式,这些文件格式的归档程序的原始代码尽可能简单,我可以向用户显示类似的东西。

echo "#filename,filesize";
readfile ($url1);
echo "#filename1,filesize1";
readfile ($url2);

所以用户得到这样的原始文件

#file1.dat,12312
(rawdata of file)
#file2.dat,1232
(rawdata of file)

最后的文件,就像一个包含这 2 个文件的 zip 文件

我尝试了很多,但没有得到满意的答案。

我找到的所有答案都是下载服务器上的文件所必需的。

它也不一定非得是 zip,任何其他可用的格式。 一种选择是简单地显示所有的整个文件并留给用户使用一些文件拆分器将其拆分成多个部分,但这也不是一件友好的事情。

@编辑 也无法加载到内存中

我设法实现了我想要的。它不是很漂亮,但它可以正常工作大多数时候

我可以轻松地在7zip-manager中打开文件,查看和解压文件。 它的 Unix Archiver(一个文件)https://en.wikipedia.org/wiki/Ar_(Unix)

<?php
echo "!<arch>\n";
echo "file1.mp4/      1618101072  0     0     100644  1570024   `\n";
readfile("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4");
echo "file2.mp4/      1618101072  0     0     100644  1570024   `\n";
readfile("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4");
?>

大部分时间:

不幸的是,至少在使用这个示例时,有些文件无法正常工作。

可能跟文件末尾或开头的字符有关,我不知道。我正在调查