【发布时间】:2011-01-05 14:57:52
【问题描述】:
我该怎么做?我尝试使用 file_put_contents(),但它创建了一个损坏的文件。
我现在正在尝试使用正确的标题设置视图以使其正常工作。
<?php
header('Content-Type: image/jpeg');
header('Content-Transfer-Encoding: base64');
echo $this->dokument->Dokument;
这是我的控制器的内容:
public function imageAction()
{
$id = $this->_getParam('id');
$dokumentTabell = new Ordre_Model_Table_OrdreDokument();
$dokument = $dokumentTabell->find($id)->current();
$this->view->dokument = $dokument;
// disable layout and view
$this->view->layout()->disableLayout();
}
根据此处的第一个答案对其进行编辑后,它会给出以下错误消息: PHP Fatal error: Call to a member function setHttpResponseCode() on a non-object in ...\application\modules\ordre\controllers\OrdreController .php 在第 45 行
第 45 行是这样的:
->setHttpResponseCode(200)
其余代码:
public function imageAction()
{
$id = $this->_getParam('id');
$dokumentTabell = new Ordre_Model_Table_OrdreDokument();
$dokument = $dokumentTabell->find($id)->current();
$this->view->dokument = $dokument;
$filename = $dokument->Name.".".$dokument->FileExtension;
// disable layout and view
$this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$this->getResponse()
->clearAllHeaders()
->clearBody()
->setHttpResponseCode(200)
->setHeader('Content-Type', 'image/jpeg')
->setHeader('Content-Length', strlen($dokument->Dokument))
->setHeader(
'Content-Disposition',
"attachment;filename=\"{$filename}\""
)
->setHeader('Last-Modified', $dokument->SistEndret)
->setBody($dokument->Dokument);
}
如果我删除第 44 行:->clearBody(),代码“有效”。我得到了一个名称正确且大小大致正确的文件。
【问题讨论】:
-
为什么要发送 base64 编码的数据?真的是base64编码的吗?
-
不是,只是我尝试的最后一件事。我得到一个大小与应有大小相同的损坏文件。
标签: php sql-server zend-framework zend-server