web-dev-qa-db-ja.com

PDFハンドラ:content-dispositionファイル名

PDFファイルをWebブラウザー(IE8)で出力します(IE8)HttpContext.Response.writefile(fileName)とうまくいきます。ファイルを保存しようとすると、ファイル名が表示されますデフォルトではashxハンドラーです。実際の名前を渡したいのですが。

次のようにヘッダー情報を追加しようとしました:

context.Response.AddHeader("content-disposition", "attachment; filename=" + fileInfo.Name);

そして、それは機能しますが、ユーザーが開くか保存するかを選択する必要がないようにしたいのですが、ファイルを通常どおりに開いて、ユーザーがそれを保存することを選択した場合、ダイアログでデフォルトのファイル名が表示されます。

私も試しました:

context.Response.AddHeader("content-disposition", "inline; filename=" + fileInfo.Name);

あるいは Scott Hanselmanが彼のブログで提案した のように。

context.Response.AddHeader("content-disposition", "filename=" + fileInfo.Name);

それらのどれも私のために働きません。誰かが何かアイデアを持っていますか?

18
user2062308

http://greenbytes.de/tech/tc2231/#inlwithasciifilenamepdf にあるテストケースを参照してください。これは、IEに欠けている機能のようです。

14
Julian Reschke

私もこの問題に遭遇しました。私を助けたのは、contenttypeをapplication/pdfに設定することでした(古いapplication/x-pdfではなく)。

response.setContentType("application/pdf");
response.setHeader("Content-disposition", "inline; filename=\"Report.pdf\"");
5
zeisi

INLINEの場合、Internet ExplorerはURLの最後のパラメーターを使用してファイル名を作成しているようです。たとえば、URLが http://doc.com/131231231 IEの場合、131231231.pdfとしてファイルを保存するように求められます。たとえば、ファイル名が必要な場合foo_131231231.pdf IEこのURLを使用してハッキングできます: http://doc.com/foo_131231231 アプリを少し変更して、そのようなことを期待してください。醜いパラメータですが、最後にはアプリは期待どおりに動作します。

4
LyuboBG