我正在尝试保存我在 zend 中编辑的文件。实际上就是document.xml,是.docx 文件的一部分。我拿了一个 docx 文件,提取 document.xml,对内容进行了一些更改,并希望显示弹出对话框以保存新文件或打开它。
结果几乎没问题,但我收到的不是 zip 包,而是一个带有 zip 扩展名的文本文件,在内容中我可以找到实际上是压缩文件,但在视图/布局内容中。
我的代码如下:
$zip = New ZipArchive();
$newReportFilename = "Report_" . date('Y-m-d_H-i-s') . ".docx";
$dir = getcwd();
$templateLocation = "$dir\\report_template.docx";
$tempFile = "$dir\\$newReportFilename";
copy($templateLocation,$tempFile);
$zip->open($tempFile);
$fp = $zip->getStream("word/document.xml");
while (!feof($fp)) {
$fileContent .= fread($fp, 2);
}
fclose($fp);
$fileContent = "... some xml content ...";
$zip->addFromString("word/document.xml", $fileContent);
$zip->close()
header("Content-Type: application/zip");
header("Content-Length: " . filesize("$dir\\$newReportFilename"));
header("Content-Disposition: attachment; filename=\"Reportfile.zip\"");
readfile("$dir\\$newReportFilename");
我在输出文件中收到这样的东西:
...
<form id="createReport" name="createReport" enctype="application/x-www-form-urlencoded" method="post" action=""><dl class="zend_form">
<dt id="runId-label"><label for="runId" class="optional">Run ID</label></dt>
<dd id="runId-element">
<input type="text" name="runId" id="runId" value="81"></dd>
<dt id="submit-label"> </dt><dd id="submit-element">
<input type="submit" name="submit" id="submit" value="Dalej"></dd></dl></form>okPK¶ ! 8+-?¦ s [Content_Types].xml ó( ¦V-n¦0+F?+¥éó¦£C¦$@¦¤á+ò-û/Éd-¦v,¡X(YGF"@vf+3+-=~oM±1injvS-XNzѦªf++-»¼H(£¦;¿++_}¦¦\ñé¬]¬+1|p<+-Xæ*+-¢+G+Énpå! ë=¦+GÄKnûÿ1+j·HóVP<ëê¤-¤±Q±+{t!U¦èn]]ª«Ö-h)Éä=gº+HK¯¦Zé=rgë¬-p!z )--¼¬zF/Ü»û?á§;â+-=id+-hw§¬7=+në=⦣ßk¢¢öƒ¤+¦V8-nf+&éIgE+¥Y§Uv¢¦:ñæ>ì¢=+¯ï&˜ì+++p+fN/Op;¦@ñt||+zFI¤fÄ+w+ô(a+L=vBô@~=Eº|^mS9VáJv 5(+üê¶Ç+-
y8°²-âxs)±-I~
...
对文本文件的一些实验只给了我相同的结果,即在我得到的文件中,我看到了视图/布局内容以及我给出的一些文本。
当我将文件保存在磁盘中时,整个编辑和压缩工作正常,但我希望用户通过另存为对话框来决定如何处理。
你知道如何摆脱这个视图/布局内容吗?
并仅获取文件。