mimetype 文件有一个长度为 n 的额外字段。 mimetype 文件不允许使用 ZIP 格式的额外字段功能

The mimetype file has an extra field of length n. The use of the extra field feature of the ZIP format is not permitted for the mimetype file

我正在使用 C# 库 DotNetZip(Ionic.Zip 和 Ionic.Zlib)从目录生成电子书。目录如下所示:

BookName
|
|___content/
|       images/
|       css/
|       (html pages, .ops, .ncx)
|
|___META-INF/
|       container.xml
|
|___mimetype

生成存档的代码如下所示:

using (ZipFile zip = new ZipFile(pathTemp + ".epub"))
{
    zip.RemoveSelectedEntries("*.*");
    zip.AddFile(mimetype, "").CompressionLevel = CompressionLevel.None;
    zip.AddDirectory(pathTemp + "\content", "content");
    zip.AddDirectory(pathTemp + "\META-INF", "META-INF");
    zip.Save();
}

当我 运行 它通过 EPUB Validator 时,它抛出这个错误:

The mimetype file has an extra field of length 36. The use of the extra field feature of the ZIP format is not permitted for the mimetype file.

我没有压缩 mimetype 文件,所以我不知道发生了什么。

可能与 storing dates 有关 - 文档在此功能的描述中提到 "extra field"。尝试指定 EmitTimesInWindowsFormatWhenSaving = false(默认情况下为 true)并查看是否可以解决您的问题。

https://ebooks.stackexchange.com/questions/6258/the-mimetype-file-has-an-extra-field-of-length-n-the-use-of-the-extra-field-fea

从 .epub 文件中删除不需要的 .epub 格式 (META-INF/calibre_bookmarks.txt) 不需要的文件后,我遇到了同样的错误。在我 re-zipped 文件之后,我得到了上面的错误信息。

使用 -X 参数压缩:

   -X     Do  not save extra file attributes (Extended Attributes on OS/2,
          uid/gid and file times on Unix).

解决了问题。