在Zend中保存文件


Saving file in Zend

我试图保存我在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">&#160;</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~  
...

文本文件的一些实验只给了我相同的结果,这是,在一个文件中,我得到了我看到的视图/布局内容与我给出的一些文本。
当我将文件保存在磁盘中时,整个编辑和压缩工作得很好,但我希望用户通过保存为对话框来决定如何处理这个问题。

你知道如何摆脱这个视图/布局内容吗?
并且只获取文件

答案很明显。渲染器和布局需要禁用。

// Both layout and view renderer should be disabled
Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true);
Zend_Layout::getMvcInstance()->disableLayout();