Я сделал форму загрузки в своем проекте, но проблема в том, что когда я загружаю файл и пытаюсь открыть его, Zend Renderer добавляет к нему мой HTML-код макета ... Я прочитал, что мне нужно отключить рендерер и макет , Но проблема в том, что я должен сделать это в своем собственном помощнике, а не в файле контроллера, потому что мне нужно загрузить этот вспомогательный файл.
Моя функция загрузки выглядит примерно так:
<?php
class Zend_View_Helper_EditArticles extends Zend_View_Helper_Abstract
{
public function EditArticles()
{
//some code here, getting data from db table
//and now the download
if (isset($_POST['downloadarticle' . $i])) {
//this is probably bad and its not working as it should
//(?)Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true);
//(?)Zend_Controller_Action_HelperBroker::getStaticHelper('layout')->disableLayout();
$targetPath = $_SERVER['DOCUMENT_ROOT'] . '/articles/';
$file = $articles->GetArticleToDownload($_POST['art_id' . $i]);
$name = $file['name'];
$path = $file['path'];
$getfile = str_replace('//', '/', $targetPath) . $path . '.pdf';
$size = $file['size'];
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=$name.pdf");
header("Content-length: $size");
header('Content-Transfer-Encoding: binary');
readfile($getfile);
break;
}
}
echo $this->view->partial('/index/index.phtml','EditArticles');
И когда я загружаю PDF, Adobe Reader не может открыть его (когда я загружаю другие файлы, они также не могут быть открыты). Я открыл их с помощью блокнота, и перед содержимым PDF было много HTML-кода ... Что я делаю не так?
В Adobe Reader я получаю это сообщение:
Adobe Reader не удалось открыть файл «filename.pdf», поскольку он либо не поддерживается типом файла, либо, например, из-за того, что файл был поврежден, он был отправлен как вложение электронной почты и неправильно декодирован).