プロが教える店舗&オフィスのセキュリティ対策術

urizakaです。

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

A 回答 (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かで悩んだ記憶があって、どっちだったか思い出せません。
すいませんがこれで確かめてみて下さい。
    • good
    • 0
この回答へのお礼

urizakaです

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

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

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

それでは

お礼日時:2002/01/25 20:00

返事遅れました。

すみません。

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

すみません。

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

urizakaです

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

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

 それでは。

お礼日時:2002/01/25 20:08

私はServlet+OracleDBで経験がありますが、ずいぶん前の話で大まかなことしか覚えていません。

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!