Как это сделать? Я попытался использовать file_put_contents(), но создал поврежденный файл.Загрузка blob (тип: изображение) из mssql db в zend framework
Теперь я пытаюсь настроить представление с правильными заголовками, чтобы заставить это работать.
<?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() на не-объект в ... \ приложения \ модули \ \ Ordre контроллеры \ 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? –
Это не последнее, что я пробовал. Я получаю поврежденный файл примерно такого же размера, как и следовало ожидать. –