PHP安全下载多个文件并保存它们的方法

时间:2011-03-21 00:50:04

标签: php zip

我需要一种方法来下载大量文件并使用PHP将它们保存到文件系统中。这是一个部署工具,我打算使用Zip文件,因为我只是调用一些解压缩代码而且很简单。但是,ZIP功能是一个并非每个人都有的扩展功能。

我现在唯一的另一个想法是将所有内容压缩为一个文件作为Base64编码,解码并将其写回。这不理想(或者是吗?)。建议?

2 个答案:

答案 0 :(得分:2)

Zip非常难以解析,如果你可以关注rather simple file format specification并且愿意依靠zlib扩展来安装来处理解压缩。

否则,发明自己的自定义存档文件格式,并不难。这可能是一件非常简单的事情:

  • 前4个字节:存档中的文件数
  • 接下来的4个字节:文件名中的字节数
  • 下一个N字节:文件名
  • 下一个10字节:文件中的字节数
  • 下一个N字节:文件内容
  • 根据需要重复上述4行

因此,一个非常简单的存档文件可能看起来像

00020007foo.txt0000000012Hello world!0007bar.txt0000000010It worked!

您当然可以通过以二进制格式存储长度来改进它(例如,使用带有'N'格式的pack),添加校验和等等。但这样解释起来更容易。

答案 1 :(得分:0)

base64只是将一大块数据转换为通过电子邮件“安全”传输的格式,然后可以将其解码回其原生8位格式。它不允许将多个文件存档/压缩到单个文件中。您可以在MIME消息中嵌入多个单独的base64编码文件,这样可以允许多个不同的附件。但是你又回到了同样的问题 - 并不是所有东西都会原生地处理MIME消息,因为那是电子邮件的域名。

Zip是您的最佳选择。它的版本可用于阳光下的每个主要操作系统,并且内置于大型2 - MacOS和Windows的文件管理器中。其他选择(rar,7z等)远不那么常见,绝对没有开箱即用支持的机会。