어떻게 작성합니까? file_put_contents()를 사용하려했지만 손상된 파일을 만들었습니다.zend 프레임 워크의 mssql db에서 blob (type : image)을 다운로드하십시오.
이제는 올바른 헤더가있는보기를 설정하려고합니다.
<?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 치명적인 오류 : 멤버 함수 setHttpResponseCode에 호출() 비 개체에서 ... \ 프로그램 \ 모듈 \ 질서 \ 컨트롤러 \ 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로 인코딩 되었습니까? –
그건 내가 한 마지막 시도가 아니야. 그랬어야했던 것과 같은 크기의 파일이 손상되었습니다. –