0

有 zip 流经验的人可以向我解释他们打算如何工作吗?

例如,我有一个可以编辑照片元数据的应用程序(添加自定义关键字,更改标题或描述等)但是当我想从 S3 下载它们时,我必须先在服务器上临时下载才能更新(更改) 他们的元数据(使用 exiv2)。

为了下载,我尝试了这个https://github.com/maennchen/ZipStream-PHP,后来也尝试了这个https://github.com/stechstudio/laravel-zipstream但是下载“挂起”,直到所有照片都被处理(直到循环完成)并且只有在最后它才显示保存对话框。然后当你保存它时,它已经下载了,因为它是在那个“挂起”期间下载的。问题是当用户单击下载按钮时它看起来像“延迟”。当处理少量数据时,可以容忍,但是当我想下载,例如,几 GB 时,它仍然会下载它,但它是在后台进行的。当我打开网络选项卡时,我看到请求处于待处理状态并且大小列正在增长(因为它正在下载文件),然后几分钟后(这取决于您的下载速度)它会显示一个保存对话框。

现在,来自https://github.com/stechstudio/laravel-zipstream的这句话真的让我很困惑:

为您的用户提供直接下载流。即使 zip 仍在创建中,zip 下载也会立即开始。无需先将 zip 保存到磁盘。

所以我想问一下是否可以立即开始下载(在处理第一个文件之后)或者这种行为,正如我所描述的,是 zip 流的预期行为吗?

如果可能的话,是不是因为我只在后端工作,所以前端搞砸了?

还是我做错了什么?我可以改变或做一些不同的事情,有没有更好的方法来处理应用程序中的这个流程?

谢谢

4

0 回答 0