- - PR -
FileUploadについて
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-02-29 21:25
いつもお世話になっております。たかと申します。
strutsのファイルアップロードに関して、ご質問があります。 現在、struts1.1にて、ファイルアップロードのアプリを作成しております。 アップロードする際、一度、全てのファイル情報をサーバー側に送信してから、 そのファイルが妥当であるか(サイズが、指定したMaxサイズを超えていないか, ファイルサイズが0でないか等)のチェックを行っております。 この場合、 例えば、1Gのファイルといった大容量ファイルをアップロードしようとした場合、 1Gの情報を全てサーバーにアップしてから、チェックを行おうとするので、 サーバ側のメモリが足りなくなると、アップロード中にInternalServerErrorが発生します。 アップロード中にリアルタイムにファイル情報を取得して、 初期で指定したMaxサイズを超えた瞬間にアップロードを中止させる、 といった処理を行いたいものですが、何か良い解決法がありますでしょうか? (こうする事で、1Gのファイルをアップロードしようとしても、 指定したMaxサイズ以上のアップロード処理を行わずにすむはずです。) |
|
投稿日時: 2004-03-01 02:00
Strutsの機能で制御するのであれば、Controller 要素で maxFileSize を指定すればいいんじゃないでしょうか。
http://jakarta.apache.org/struts/userGuide/configuration.html Webサーバによってはアップロードのサイズを指定できるものがあるので、そこでちょん切ってしまうという手もあります。たとえばApache+WebLogicでは、mod_wlの設定で MaxPostSizeを設定することが可能です。 http://edocs.bea.com/wls/docs81/plugins/plugin_params.html サイズオーバーしたときのために「413 Request Entity Too Large」というHTTPステータスコードが用意されています。 ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt これをはじめ、エラーページやメッセージをきちんと返すように実装するのは、結構面倒かもしれません。ポータビリティを確保したいなら、アップロードを受け付けるサーブレットを書き下ろしてしまうのが一番簡単だったりするかも。 きちんと実現できたら、ここに書いてくれるとうれしいです。 |
|
投稿日時: 2004-03-01 22:51
>Strutsの機能で制御するのであれば、Controller 要素で
>maxFileSize を指定すればいいんじゃないでしょうか。 ご回答、ありがとうございます。 とりあえず、上記方法を試させて頂きました。 ただ、この場合でも、一度、全てのファイル情報をサーバーに送ってから、 サイズチェック等を行っているみたいで、 Internal Server Error が、アップロード中に表示されました。 最大サイズさえ指定しておけば、そのサイズに達した段階で、すぐにエラー処理を行う、 といった方法は、やはり、自分で実装しないといけないんでしょうか。。。 この方法の方が、確実にサーバーへの負荷がかからないような気がするんですが・・・。 |
1
