- PR -

ダウンロード時のファイル名について

1
投稿者投稿内容
lepin
会議室デビュー日: 2004/12/24
投稿数: 7
投稿日時: 2004-12-24 17:05
はじめまして。
参加させて頂き、いきなりの質問で申し訳ないのですが

現在作成のアプリケーションでPDFファイルをダウンロードする際、
ファイル名がサーブレット名になってしまいます。
いくつかのサイトを調べて、
response.setHeader("Content-Disposition", "inline; filename=\\"test.pdf\\"");
で出来ると書いてあったのですが、うまくいきません。
どなたかご存知の方いらっしゃいましたらご教授いただけないでしょか?
よろしくお願い致します。

サーブレットのソース↓

//PDFデータの取得
byte[] b = conn.getPDF(resource.getString("DATASOURCE"),pdf);

//レスポンスヘッダの設定
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=\\"test.pdf\\"");
response.setContentLength(b.length);

//ブラウザへ送信
ServletOutputStream out = response.getOutputStream();
out.write(b);
out.flush();


[ メッセージ編集済み 編集者: lepin 編集日時 2004-12-24 17:31 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-12-24 17:45
どのようにうまくいきませんか?
lepin
会議室デビュー日: 2004/12/24
投稿数: 7
投稿日時: 2004-12-24 18:01
失礼しました。

やりたいこととしては、DBからバイナリーデータでPDFファイルのデータを取得し、
ブラウザでPDFを一度表示させた後、保存ボタンを使ってPDFファイルを
ローカルに保存します。
その時、保存する際のデフォルトのファイル名が
サーブレットの名前になってしまいます。
保存ボタンを押した時に表示されるファイル名を任意の名前にすることは可能でしょうか?

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-12-24 18:34
なるほど。「いくつかのサイト」にあったサンプルはうまくうごきましたか?
うごくのであれば、手元のアプリケーションとの違いをくらべてみましょう。
それらも動かないのであれば環境面に問題があると言えそうです。
#たぶんちゃんと動きますが
lepin
会議室デビュー日: 2004/12/24
投稿数: 7
投稿日時: 2004-12-24 19:44
inlineをattachmentに変更することで
予定していた動きとは少し違いますが、ファイル名の指定をすることが出来ました。
とりあえずこれで対応できそうです。

ありがとうございました。
lepin
会議室デビュー日: 2004/12/24
投稿数: 7
投稿日時: 2004-12-27 16:22
新たな質問なのですが、
ダウンロードダイアログで、「保存」を押せば指定したファイル名で
保存されるのですが、[開く]を押すとファイル名の後に、[1]などの
連番付いてしまいます。

Chasheのせいかな(?)と思っているのですが(間違ってたらごめんなさい)
過去のスレッドでもあったように、Cache-Control: no-cacheの設定をすると
ファイルが開けなくなってしまいます。
ということは、ファイル名の後にTEST[1].pdfなどと[1]が付いてしまうのは
あきらめるしかないのでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)