- - PR -
PDFファイルのダウンロード時のファイル名について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-07-30 22:57
はじめまして。
現在PDFファイルをサーバー側で読み込みresponseに書き込みクライアント側で 表示するという処理を作成しています。 その時にパスワードが設定されているPDFファイルの場合に 普通に開くと「(ファイル名)」は保護されています。」と出るのですが 上記の方法で開くとファイル名がサーバーへのアクション名になってしまいます。 submit時のアクションは「ImageDisplay.do」となっておりまして サーバーからの戻りとしてPDFファイルを開くときに 「test.pdf」は保護されています。」と出したいのですが 「ImageDisplay.do」は保護されています。」と出てしまいます。 サーバー側でもファイル名の設定は行っているのですが表示されません。 解決策がありましたらよろしくお願い致します。 環境 Tomcat5.0 JDK1.5 処理内容 ByteArrayOutputStream byteOut; FileInputStream in = new FileInputStream("C:\\pdf\\err.pdf"); byte[] buf = new byte[64]; int len = 0; while ((len = in.read(buf)) != -1) { byteOut.write(buf, 0, len); } response.setHeader("Content-Disposition", "inline; filename=\"test.pdf\""); response.setContentType("application/pdf"); ServletOutputStream srvOut = null; try { srvOut = response.getOutputStream(); byteOut.writeTo(srvOut); } finally { /* 出力ストリームのクローズ */ if (srvOut != null) { srvOut.close(); } if (byteOut != null) { byteOut.close(); } } return mapping.findForward(null); |
|
投稿日時: 2008-07-31 10:42
inlineじゃなくて、attachmentじゃどう?
そもそもinlineは、ファイル名なんか必要ない動作だし。 ネットで見かけただけだけど、IEは行儀の悪いことをしているみたいだけどね。 |
|
投稿日時: 2008-07-31 20:47
情報不足でした。
申し訳ありません。 仕様として開く・保存などのダイアログを出せずに直にPDFファイルを 開きたいのです。 |
|
投稿日時: 2008-08-01 10:56
いろいろ読み間違えていたようです。m(_ _)m
その辺は、ブラウザやプラグインの担当範囲であって、 Webアプリは関係ありません。 ストリームで流れてきたデータは、ファイルとしての実体がないから、 保存されていない段階では、ファイル名なんて、システム上は意味がありません。 意味があるってのは、あくまでも人間の都合だし。 だから、アクション名が表示されるのは、ロジック上は適切。 私ではお役に立てそうにないです。 申し訳ありません。 |
|
投稿日時: 2008-08-01 13:21
全く試してないですが、PATH_INFOは使えないですかねえ…。
|
|
投稿日時: 2008-08-01 16:55
PDFをいきなり開くようにするのってトラブルの元ではありませんか?
・MimeTypeに依存しまくりなのでpdfと認識されれば、AcrobatReaderが開く(これ正常) ・正常なcontentLengthを埋め込まないと真っ白になってみたり(Readerのバグ) ・MimeTypeにpdfと認識させたくないのに勝手にIEがファイルタイプを解釈して Readerで開いたり開かなかったり(制御不能) ・ActiveXのバインドできるメモリ容量の制限でブラウザが悲鳴を上げたり。 特別バイトサービングが必要なくらい大きなPDFであればその方式で 頑張るんでしょうけど。 普通にファイルダウンロードのダイアログ出すのではいけないのですか!? |
|
投稿日時: 2008-08-02 09:44
>普通にファイルダウンロードのダイアログ出すのではいけないのですか!?
一言で言ってしまえば「仕様」としか・・・ 今回のはパスワード付のファイルを対象としていますが 別画面ではパスワードがかかっていないファイルを 画像情報に変換してresponseに書き込み画面に表示しております。 動作をそちらに合わせるためにダイアログを出さないようにとなっているんです。 とりあえずファイル名は表示されなくても良いという回答をいただきましたので 皆様ありがとうございました。 結論としてはファイル名は指定できないということみたいですね。 |
1