- ベストアンサー
ファイルをダウンロードして展開するようにしたい
urizakaです。 さて、JSP+SQL-Server2000でExcel等のファイルをバイナリデータとしてDB のimageフィールドに登録して、それをダウンロードするというプログラムを 組んでおり、なんとかファイル名とそのバイナリ-データをアップロードすることはできるようになったのですが、その後、バイナリ-データをDBからダウンロードして、その後にどのようにすれば良いのかが分かりません。 バイナリ-データをDBから検索して持ってきて、ブラウザー上でそのファイルが展開されるようにしていのですが…(よくPDFのサイトを開くと、自動的にPDFが展開されるように) バイナリ-データにファイル名とそのファイルのタイプを与えてやれば良いような気もするのですが、それをどうやって与えてやればいいのかも皆目見当がつきません。すみませんが、ご存知の方がいらっしゃったら教えてください。 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
かなり昔にやったのでうろ覚えですが... 1.コンテントタイプの指定(Download だけならapplication/octet-streamでもいいかも) response.setContentType(コンテントタイプ); 2.ファイルサイズの指定 response.setContentLength(ファイルサイズ); 3.ファイル名の指定 response.setHeader("Content-Disposition", "attachment; filename=\" + ファイル名 + "\""); response.setHeader("Content-Disposition", "inline; filename=\" + ファイル名 + "\""); たしか昔attachmentかinlineかで悩んだ記憶があって、どっちだったか思い出せません。 すいませんがこれで確かめてみて下さい。
その他の回答 (3)
- imamu252
- ベストアンサー率40% (2/5)
返事遅れました。すみません。 パフォーマンスは悪かったですよ。 仕方ないと思います。 では、ガンバッテください。
- imamu252
- ベストアンサー率40% (2/5)
すみません。まとまりなくて。 また少し思い出しました。前回答に加えファイル名をresponseに設定した憶えがあります。うる憶えですみません。
お礼
urizakaです ありがとうございます、おかげでなんとかできました。 しかしながら、このDBを使う方法ですが1MBぐらいまでならともかく、それ 以上の容量になると共有フォルダを使う方法に比べて非常にパフォーマンスが 悪いですね。 私のプログラムの書き方が悪いだけかもしれませんが… imamuさんがプログラミングした時はどうでしたか? それでは。
- imamu252
- ベストアンサー率40% (2/5)
私はServlet+OracleDBで経験がありますが、ずいぶん前の話で大まかなことしか覚えていません。しかし参考になるかもしれないのでお伝えします。 OracleDBにBLOBで入っているイメージをInputStreamで取り出しそのデータをServletのOutputStreamに書き込んだら出来ました。ただそのときcontent-typeなどの設定もした憶えがありますが、どのように設定したかは憶えていません。Excelもバイナリなら同じ方法でcontent-typeをExcelに定義されているものにすればいいのではないでしょうか?Servletでの話ですが。
お礼
urizakaです 回答ありがとうございます。 色々試してみて何とかできました。 しかしながら、このDBにデータを収める方法ってあまりパフォーマンス的によくないですね。アップロードはともかく、ダウンロードで共有フォルダを使う方法と比べていい結果が出ませんね…私のプログラムの仕方が悪いのかもしれませんが。 以前、同じ方法を行われたということですが、akinori_sさんの時はパフォーマンス的にはどうでしたか? それでは