- PR -

アップロードファイルのcontentType

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2009-02-03 15:39
こんにちは。

クロスブラウザ対応で、ファイルアップロードをしてます。
Webwork2のフレームワークを使ったWebアプリを作ってます。

IE6では問題ないのですが、Chorme & Safariでは、ファイルアップロードができません。
Exceptionにも何も吐かれず、Actionのvalidateには入ってきていて、execute()には
入ってこないので、何が原因か途方にくれてましたが、jpeg形式はアップロードでき、
zip形式だとダメなのに気がつきました。

jpg : "image/jpeg"
zip : "null"

このzipの時ですが、validate()は感知するので、ここで
fileContentTypeに「application/zip」をセットしているのですが、
execute()に入ってきません。

そもそもvalidate()でこのようにセットする事が邪道ですが、
ブラウザがcontentTypeを読み取ってくれない場合はどうすればよいのでしょうか?
朝日奈 ありす
ベテラン
会議室デビュー日: 2007/10/28
投稿数: 57
お住まい・勤務地: 北の都
投稿日時: 2009-02-03 20:12
拡張子 .zip で判定するのは?
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2009-02-03 21:53
ありがとうございます。

このcontentTypeをどこでセットするべきか分かりません・・。JavaActionのvalidate()には全ブラウザ入ってくるので、ここでthis.setContentType()とやっているのですが・・。
もしかして、requestにセットしないといけないのかも知れませんが、その方法が分かりません・・。
ちょま吉
大ベテラン
会議室デビュー日: 2004/08/04
投稿数: 112
投稿日時: 2009-02-04 17:24
よくわかりませんが、web.xmlでmimeタイプを設定するとかはどうでしょう?
ちなみに、responseのsetContenttype()はファイルのダウンロードとかで設定しません?
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2009-02-04 19:49
あぁ、全くの盲点でした。

確かにDownLoadで違う、contentTypeを設定していました。
そこで、application/zipに変えてみたんですが、結果は同じでした。

ちなみにログですが、
2009/02/04 19:42:05 com.opensymphony.webwork.interceptor.FileUploadInterceptor intercept
情報: file file null さんぷる.zip D:\Tomcat6\work\Catalina\localhost\test\upload_247662e8_11f40e15ae0__8000_00000001.tmp

のように、nullになってます。
IE・FFだと
情報: file file application/x-zip-compressed さんぷる.zip
と出力されます。

ん〜・・
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2009-02-05 13:51
原因はFileUploadのInterceptorにありました。

この時点で、contentTypeはnullなのですが、uploadFileの存在チェックだけで、
次処理へ進み、Actionのexecute()でこけてた用に思います。

Safari, Chromeでも動きました。

1

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