我正在查看用于创建 ePub 文件的 tutorial。它指出,包含 ePub 书籍的 zip 必须包含一个名为 mimetype 的文本文件,该文件“必须是 zip 文件中的第一个,未压缩”。他给出的例子使用了一个命令行工具,我想知道如何在 PHP 中做同样的事情。

我认为它会是 zip 文件中的第一个,只要它是我在代码中添加的第一件事,但是如何将它添加到未压缩的 zip 中。还是我误读了这个?

提前致谢。

最佳答案

您不能使用 native PHP ZipArchive 类来实现。但是 PEAR::Archive_Zip 可以 - 如果您在添加该特定文件时使用 ARCHIVE_ZIP_PARAM_NO_COMPRESSION 参数。

一个更简单的解决方案是使用模板。使用未压缩的“mimetype”条目 (zip -0) 创建一个 stub zip 文件,然后将其用作临时 zip,然后向其中添加新条目:

file_put_contents("epub.zip", base64_decode("UEsDBAoAAAAAAOmRAT1vYassFAAAABQAAAAIABwAbWltZXR5cGVVVAkAA5adVUyQVx5PdXgLAAEE6AMAAAToAwAAYXBwbGljYXRpb24vZXB1Yit6aXBQSwECHgMKAAAAAADpkQE9b2GrLBQAAAAUAAAACAAYAAAAAAAAAAAApIEAAAAAbWltZXR5cGVVVAUAA5adVUx1eAsAAQToAwAABOgDAABQSwUGAAAAAAEAAQBOAAAAVgAAAAAA"));
$zip = new ZipArchive();
$zip->open("epub.zip");

$zip->addFiles(...);

(虽然未经测试)

关于php - 将文件添加到使用 PHP 解压缩的 zip,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3142810/

10-16 14:13