Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在ActionScript3-AdobeAIR中使用FZIP创建docx_Actionscript 3_Air_Docx - Fatal编程技术网

Actionscript 3 在ActionScript3-AdobeAIR中使用FZIP创建docx

Actionscript 3 在ActionScript3-AdobeAIR中使用FZIP创建docx,actionscript-3,air,docx,Actionscript 3,Air,Docx,你好 我会尽我最大的努力解释我的问题,我真的希望有人能找出什么是错的 情况: 使用微软的OfficeOpenXML格式,我能够创建一个干净的Word文档所需的文件。这些文件都是XML文件。我要做的是为每个文件将XML内容写入不同的bytearray 然后我将bytearray添加到FZIP库中http://codeazur.com.br/lab/fzip/ 并使用以下代码创建docx文件: var zip:FZip = new FZip(); zip.addFile("/_rels/", nul

你好 我会尽我最大的努力解释我的问题,我真的希望有人能找出什么是错的

情况:

使用微软的OfficeOpenXML格式,我能够创建一个干净的Word文档所需的文件。这些文件都是XML文件。我要做的是为每个文件将XML内容写入不同的bytearray

然后我将bytearray添加到FZIP库中http://codeazur.com.br/lab/fzip/ 并使用以下代码创建docx文件:

var zip:FZip = new FZip();
zip.addFile("/_rels/", null, false);
        zip.addFile("/docProps/", null, false);
        zip.addFile("/word/", null, false);

        zip.addFile("[Content_Types].xml", bytContentType, false);
        zip.addFile("/docProps/app.xml", bytApp, false);
        zip.addFile("/docProps/core.xml", bytCore, false);
        zip.addFile("/word/document.xml", bytDocument, false);
        zip.addFile("/word/fontTable.xml", bytFontTable, false);
        zip.addFile("/word/settings.xml", bytSettings, false);
        zip.addFile("/word/webSettings.xml", bytWebSettings, false);
        zip.addFile("/_rels/.rels", bytRels, false);

        var file:File = File.documentsDirectory;
        file = file.resolvePath(folder + ".docx");
        var stream:FileStream = new FileStream();
        stream.open(file, FileMode.WRITE);
        zip.serialize(stream);
        stream.close();
好的,这将在我的文档中创建一个新的docx文件。如果我将.docx重命名为.zip并解压缩,它将遵循Word文档所需的确切结构,例如: 在本例中,无标题文档最初是Untitled Document.docx,然后重命名为.zip并解压缩

所以你可以看到一切正常,直到。。。您尝试在Word中打开未命名的document.docx。它会说文件已损坏

然而,什么是有效的。。。 提取docx文件后,如屏幕截图中所示,选择无标题文档文件夹中的所有文件/文件夹并将其压缩,然后将压缩文件重命名为docx。请参见结果:它在Word中工作正常,Word可以正确读取文件。注意:如果再次尝试压缩和重命名未命名的文档文件夹,它也会再次损坏

所以我的问题是 我希望描述是清楚的,现在我希望有人谁知道什么可能是问题的word文件时,压缩使用FZIP在actionscript 3损坏,但工作正常,当你压缩文件后提取你的损坏的文件


谢谢

这只是一个偶然的建议,因为我无法理解代码:但它是否以某种方式为您制作了一个压缩目录,而不仅仅是将一堆文件压缩在一起?应该是后者。诚然,它看起来确实像你的消息来源在做什么

正如我曾经发现的那样,这带来了很大的不同:请看——特别是埃里克·怀特的精彩答案


我看到在解压Untitled Document.zip的结果图像中,有一个外部目录,也称为Untitled Document。如果您没有单独创建此目录,但它是从解压缩中产生的,那么我认为这可能是问题所在。请注意,如果您只是重命名一个random.docx文件.zip并打开它,像[Content\u Types].xml这样的位将分布在包含zipfile的目录中,而不是为自己创建一个新目录;因此.docx文件本身不是一个压缩目录。另一种说法是,如果将Archive.docx重命名为Archive.zip并解压缩,它会覆盖目录中的文件,还是创建一个新目录?如果Word打开它,假设它是前者

我找到了问题的解决办法。这是一个诚实的错误,但也是一个恼人的错误

zip.addFile("/docProps/app.xml", bytApp, false);
应该是

zip.addFile("docProps/app.xml", bytApp, false);

与所有其他addFile元素相同,在搜索原因时需要删除第一个斜杠

。。。有很多ActionScript zip库,您可以尝试另一个。