- PR -

servlet:エクセルダウンロード

投稿者投稿内容
sunfire
会議室デビュー日: 2004/09/13
投稿数: 7
投稿日時: 2004-09-13 18:32
ご教授有難う御座います。
お二人のご指摘はもっともです。

まず、mime-typeの設定を入れ替えてみました。
引用:

koeさんの書き込み (2004-09-13 13:46) より:
ServletResponse#setContentType()やServletResponse#setHeader()は、
ServletResponse#getOutputStream()の取得の前に実行する必要があったと思います。
順番を変えてみてはどうでしょうか。


ですが、変化はありませんでした。

次に、DBに格納を行わずに、サーバ上のカレントディレクトリ
にファイルを書き出し、配置してみました。
そうしましたら、正常にファイル表示することができました。
正直、よく分かっておりませんが、DB側を調査してみます。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-09-14 09:05
原因の切り分けとして、(試しに)
 1.アップロードファイルをサーバ上ディレクトリに格納(ex c:\temp\in)
 2.「1.」のファイルをDBに格納
 3.「2.」にてDBに格納したファイルを、サーバ上ディレクトリに格納(ex c:\temp\out)
 4.クライアントへダウンロードファイルとして「3.」をDL

「1.」「3.」「4.」時点の各ファイルをバイナリ−エディタでチェック

参考までに...
SJ0392
ベテラン
会議室デビュー日: 2004/02/05
投稿数: 62
お住まい・勤務地: 神奈川・横浜
投稿日時: 2004-09-14 13:04
DB格納時のInsertで、BLOB型に "empty_blob()"を設定してないです。
Insert後に改めてSelectでBLOB型の項目を取得して、書き込み用のストリームを得るのが手順です。

# 私の知っているのはOracleの場合です。
# Oracleの公開しているドキュメントに書かれていました。
# MySqlも同じか知らずに投稿してしまったので該当しない場合はご容赦下さい。

[ メッセージ編集済み 編集者: SJ0392 編集日時 2004-09-14 13:09 ]
sunfire
会議室デビュー日: 2004/09/13
投稿数: 7
投稿日時: 2004-09-14 23:29
皆様、お返事有難う御座います。

時間がとれず、十分な検証を試せておりませんが、
現在までの状況は次のようになっております。

引用:

えんぞ@見習さんの書き込み (2004-09-14 09:05) より:
原因の切り分けとして、(試しに)
 1.アップロードファイルをサーバ上ディレクトリに格納(ex c:tempin)
 2.「1.」のファイルをDBに格納
 3.「2.」にてDBに格納したファイルを、サーバ上ディレクトリに格納(ex c:tempout)
 4.クライアントへダウンロードファイルとして「3.」をDL



1につきましては、正常にアップロードできました。
2の段階にて格納されたデータをダンプし、バイナリエディタで比較した結果、
 やはり、一部の文字コードが変換されておりました。

"empty_blob()"については、まだ試せておりません。

FileInputStreamを使用しておりますが、こちらに原因があるのかもしれません。
引き続き、調査を行って見たいと思います。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-09-15 09:46
MySqlはまったく未知の領域なので、正しいかどうかは不明。

「MySQL 言語リファレンス」の斜め読みですが...
[引用]
バイナリデータを BLOB フィールドに挿入したい場合、次の文字をエスケープ シーケンスで表す必要があります
[/引用]

と記載されているので、SJ0392さんの仰ってる可能性が高いと思われます。
# Cだと「API 関数 mysql_escape_string()」というのがあるようですが、Javaは...
sunfire
会議室デビュー日: 2004/09/13
投稿数: 7
投稿日時: 2004-09-22 01:52
お返事遅くなりました。
いろいろと、お教えいただき有難う御座います。

DBの環境をMySQLからOracleへ偶然にも変更することになりまして、
教えていただきました"empty_blob()"にて初期化すること
で挿入・表示とも問題なくできるようになりました。

ただ、MySQLにつきましては、できておりませんので、
時間を見まして検証を行っていきたいと考えています。
まずは、"empty_blob()"が使えるかと、
エスケープ方法を試して見たいと思います。

有難う御座いました。

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