みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ファイルをダウンロードして展開するようにしたい

urizakaです。

さて、JSP+SQL-Server2000でExcel等のファイルをバイナリデータとしてDB
のimageフィールドに登録して、それをダウンロードするというプログラムを
組んでおり、なんとかファイル名とそのバイナリ-データをアップロードすることはできるようになったのですが、その後、バイナリ-データをDBからダウンロードして、その後にどのようにすれば良いのかが分かりません。
 バイナリ-データをDBから検索して持ってきて、ブラウザー上でそのファイルが展開されるようにしていのですが…(よくPDFのサイトを開くと、自動的にPDFが展開されるように)
 バイナリ-データにファイル名とそのファイルのタイプを与えてやれば良いような気もするのですが、それをどうやって与えてやればいいのかも皆目見当がつきません。すみませんが、ご存知の方がいらっしゃったら教えてください。
 宜しくお願いします。

投稿日時 - 2002-01-18 10:52:16

QNo.200630

困ってます

質問者が選んだベストアンサー

かなり昔にやったのでうろ覚えですが...

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かで悩んだ記憶があって、どっちだったか思い出せません。
すいませんがこれで確かめてみて下さい。

投稿日時 - 2002-01-21 18:07:24

お礼

urizakaです

回答ありがとうございます。

色々試してみて何とかできました。
しかしながら、このDBにデータを収める方法ってあまりパフォーマンス的によくないですね。アップロードはともかく、ダウンロードで共有フォルダを使う方法と比べていい結果が出ませんね…私のプログラムの仕方が悪いのかもしれませんが。

以前、同じ方法を行われたということですが、akinori_sさんの時はパフォーマンス的にはどうでしたか?

それでは

投稿日時 - 2002-01-25 20:00:34

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

返事遅れました。すみません。

パフォーマンスは悪かったですよ。
仕方ないと思います。
では、ガンバッテください。

投稿日時 - 2002-01-29 13:41:38

ANo.2

すみません。まとまりなくて。
また少し思い出しました。前回答に加えファイル名をresponseに設定した憶えがあります。うる憶えですみません。

投稿日時 - 2002-01-20 01:28:41

お礼

urizakaです

 ありがとうございます、おかげでなんとかできました。
しかしながら、このDBを使う方法ですが1MBぐらいまでならともかく、それ
以上の容量になると共有フォルダを使う方法に比べて非常にパフォーマンスが
悪いですね。
 私のプログラムの書き方が悪いだけかもしれませんが…

 imamuさんがプログラミングした時はどうでしたか?

 それでは。

投稿日時 - 2002-01-25 20:08:44

ANo.1

私はServlet+OracleDBで経験がありますが、ずいぶん前の話で大まかなことしか覚えていません。しかし参考になるかもしれないのでお伝えします。
OracleDBにBLOBで入っているイメージをInputStreamで取り出しそのデータをServletのOutputStreamに書き込んだら出来ました。ただそのときcontent-typeなどの設定もした憶えがありますが、どのように設定したかは憶えていません。Excelもバイナリなら同じ方法でcontent-typeをExcelに定義されているものにすればいいのではないでしょうか?Servletでの話ですが。

投稿日時 - 2002-01-20 01:08:33

あなたにオススメの質問