このコードは助けるべきである。ここに私のコードのスニペット
use Zend\Http\Request;
.....
public function downloadAction() {
$response = new Request();
$response->setHeaders(Request::fromString("Content-Type: application/octet-stream\r\nContent-Length: 9\r\nContent-Disposition: attachment; filename=\"ultimate_remedy_readme.txt\""));
}
は今、私はこのエラーに
/var/www/whowantsmymoney/vendor/zendframework/zendframework/library/Zend/Http/Request.php:88
メッセージを取得していますされますあなたは単純なファイルのダウンロードをします。
public function downloadAction() {
$fileName = 'somefile';
if(!is_file($fileName)) {
//do something
}
$fileContents = file_get_contents($fileName);
$response = $this->getResponse();
$response->setContent($fileContents);
$headers = $response->getHeaders();
$headers->clearHeaders()
->addHeaderLine('Content-Type', 'whatever your content type is')
->addHeaderLine('Content-Disposition', 'attachment; filename="' . $fileName . '"')
->addHeaderLine('Content-Length', strlen($fileContents));
return $this->response;
}
鉱山があったように、私は、このコードを希望する多くの葉が、簡単な例で動作するはずです想像してみてください。私はどのようにあなたがチャンクでファイルを読むことを扱うかもしれないか分からない。多分誰かが光を放つことができるでしょうか?
編集 - 送信ストリーム
私は情報の目的のためにここにこれを追加しました。それはおそらくより少ないメモリを使用するようにダウンロードを強制するより良い方法です。
代わりの新しいリクエストオブジェクトをインスタンス化し、既存の応答を取得する必要があります。 $ this-> getResponse()を試してみてください。ヘッダーを設定したら、応答を返す必要があります。 –
私が既存のヘッダーを使用していなかった唯一の理由は、既存のヘッダーには必要なコンテンツがなく、新しいものを作成しなければならないということでした。 –