私は質問があります、どうすればこのようなことができますか:
header("Content-Disposition: inline; filename=result.pdf");
header("Content-type: application/x-pdf");
Zend Frameworkで、私は試しました:
$this->getResponse()
->setHeader('Content-Disposition:inline', ' filename=result.pdf')
->setHeader('Content-type', 'application/x-pdf');
しかし、正しく動作しません。
宜しくお願いします、
応答ヘッダーを設定するためのステートメントの形式が少し間違っています:
$this->getResponse()
->setHeader('Content-Disposition', 'inline; filename=result.pdf')
->setHeader('Content-type', 'application/x-pdf');
上記は機能するはずです-Content-Disposition
- headerの違いに注意してください。
ちなみに...(ブラウザにドキュメントを読み込む代わりに)ダウンロードボックスを強制したい場合は、Content-Disposition
attachment
を使用する必要があります。
$this->getResponse()
->setHeader('Content-Disposition', 'attachment; filename=result.pdf')
->setHeader('Content-type', 'application/x-pdf');
ブラウザーによっては、Content-Length
を設定するか、Content-type
を、application/force-download
、application/octet-stream
、application/download
の1つ以上の組み合わせ(複数のヘッダー)に変更する必要がある場合もあります。そして、私がコメントで書いたように、ヘッダーをキャッシュするとダウンロードが妨害される場合があります。送信されるキャッシングヘッダーを確認します。
表の後半で、ブラウザにファイルまたはメモリ内のデータを送信するための単純で再利用可能なコンポーネントとして このアクションヘルパー をお勧めします。
キャッシュ、廃棄のオプションがあり、Apache Sendfileを利用できます
私の推測では、あなたは次のようなことをしていると思います:
_$this->getResponse()
->setHeader('Content-Disposition:inline', ' filename=result.pdf')
->setHeader('Content-type', 'application/x-pdf');
fpassthru($filename);
exit();
_
か何か。
ここでの応答はレンダリングされません(ヘッダーがレンダリングされます)。応答は通常、アクション後の印刷中にレンダリングされます。
ヘッダーを直接設定する(非ooコードで注記したように)か、$this->getResponse()->sendHeaders()
を直接使用する必要があります。
ヘッダーセットがありました。設定されていませんが、追加されました。だから私はtext/htmlのcontent-Typeとapplication/pdfも持っていました。
Content-TypeにTRUEのフラグを立てると、IOSおよびダウンロードまたはエラー後に暗号の記号のみを表示する他のデバイスでダウンロードが可能になりました。
->setHeader('Content-type', 'application/x-pdf', true);
setHeader($name, $value, $replace = false)
から: https://framework.zend.com/manual/1.12/de/zend.controller.response.html