我使用ZipArchive构建了一个zip文件,其中包含如下目录结构:
analysis_name /
attachment_file_1.pdf
attachment_file_2.jpg
attachment_file_3.jpg
attachment_file_4.jpg
attachment_file_5.xlsx
这一切都很好,我可以让用户下载它而不用担心。要求是他们需要能够将多个分析拟合到一个zip文件中,以便我们有这样的东西:
analysis_name_1 /
attachment_file_1_1.pdf
attachment_file_1_2.jpg
...
analysis_name_2 /
attachment_file_2_1.pdf
attachment_file_2_2.jpg
...
analysis_name_n /
attachment_file_3_1.pdf
attachment_file_3_2.jpg
...
我面临的问题是这些组合的zip文件不能超过16 MB,因为它们必须上传到不同的站点。所以我要说我有20个分析,大小从500 K到6 MB不等。如果我使用gzip,我很确定我可以进行单独的分析gzips,贪婪地连接它们直到下一个文件超过16 MB,然后开始一个新文件。
是否可以使用zip文件执行此操作?我并不热衷于将gzips转换为zips,因为生成的文件可能会大于16 MB。
我注意到this question,就像那位作家一样,我正在寻找一个开源解决方案。
答案 0 :(得分:0)
我最终做的是:
这样就会给出一个保证小于限制的zip文件列表,并且应该是最少的。
有几点需要注意:
虽然您可以在PHP中实现这一点,但我最终用Python编写它,因为它必须在后台进程中由于响应性而完成,并且因为要求用户能够下载生成的zip文件而不是必要时一次。有些随意,我选择在Python中进行所有后台处理。