![](/img/trans.png)
[英]Connecting to MsSql Db through Zend framework SQLSTATE[] (null) (severity 0)
[英]Downloading a blob (type: image) from a mssql db in zend framework
我该怎么做? 我尝试使用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致命错误:在... \\ application \\ modules \\ ordre \\ controllers \\ OrdreController.php中的非对象上调用成员函数setHttpResponseCode() 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(),则代码“有效”。 我得到一个名称正确且大小正确的文件。
在我看来,视图永远不应输出标头。对我来说,这感觉更像是控制器要做的事情。 另外,在控制器中,您可以访问响应对象,该对象具有用于设置标题的方法。
另外, $dokument->Dokument
base64编码的吗? 否则,只需跳过该标头即可。
我可能会做类似的事情:
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->_helper->Layout()->disableLayout();
$this->_helper->ViewRenderer->setNeverRender();
$this->getResponse()
->clearAllHeaders()
->clearBody()
->setHttpResponseCode(200)
->setHeader('Content-Type', 'image/jpeg')
->setHeader('Content-Length', strlen($dokument->Dokument))
->setHeader(
'Content-Disposition',
"attachment;filename=\"{$dokument->filename}\""
)
->setHeader('Last-Modified', $dokument->lastModified)
->setBody($dokument->Dokument);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.