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

本文关键字:字段 文件 mimettype ZIP 功能 格式 不允许 有一个 mimetype | 更新日期: 2023-09-27 18:21:58

我正在使用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验证器运行它时,它会抛出以下错误:

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

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

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

请参阅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)。在我重新压缩文件后,我收到了上面的错误消息。

使用-X参数进行压缩:

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

解决了问题。

可能与存储日期有关——文档在对该功能的描述中提到了"额外字段"。尝试指定EmitTimesInWindowsFormatWhenSaving = false(默认情况下为true),看看它是否解决了您的问题。