apache fileupload FileItemは常に空ですか?
2513 ワード
org.apache.commons.fileuploadコンポーネントを使用する場合、バックグラウンドのFileItemは常に空です.methodをPOSTに設定しても
送信方法は次のとおりです.
バックグラウンドにも応答があり、
ServletFileUpload.isMultipartContent(req);
Trueにも戻ります.つまりMultipartContentですが、なぜFileItemが空なのでしょうか.
ここではstrutsもfilterも使っていませんが、いったい何が原因なのでしょうか.簡単なページテストで実行でき、やっと問題の原因を発見しました.
一般的にform submit()の後、ページは指定されたページにジャンプしますが、ここではどういうわけかページは終始ジャンプしていませんが、バックグラウンドは応答を受信しています.今のAJAXが横行している時代には、確かにこの問題を無視しがちです.
解決方法:
iframeに参加する
formのtargetをiframeに指します.すなわち、次のようにします.
この問題が解決する.
enctype="multipart/form-data"
送信方法は次のとおりです.
document.frmUpload.action = imgUrl + params;
document.frmUpload.submit();
ページコードもよくチェックしました <form name="frmUpload" method="POST" enctype="multipart/form-data">
:<input type="file" id="fileImgSample" name="fileImgSample" ><br>
</form>
バックグラウンドにも応答があり、
ServletFileUpload.isMultipartContent(req);
Trueにも戻ります.つまりMultipartContentですが、なぜFileItemが空なのでしょうか.
ここではstrutsもfilterも使っていませんが、いったい何が原因なのでしょうか.簡単なページテストで実行でき、やっと問題の原因を発見しました.
<form method="POST" enctype="multipart/form-data" action="http://localhost:9080/MyWeb/tempMgrServlet?action=uploadImgSample">
<p><input type="file" name="F1" size="20"><input type="submit" value=" " name="B1"><input type="reset" value=" " name="B2"></p>
</form>
一般的にform submit()の後、ページは指定されたページにジャンプしますが、ここではどういうわけかページは終始ジャンプしていませんが、バックグラウンドは応答を受信しています.今のAJAXが横行している時代には、確かにこの問題を無視しがちです.
解決方法:
iframeに参加する
<iframe name="ifrmSubmit" id="ifrmSubmit" onload="onUploadReturn();" width="0" height="0"></iframe>
//
function onUploadReturn(){
var ifrmSubmit = document.getElementById('ifrmSubmit');
if("complete" == ifrmSubmit.readyState){
var msg = ifrmSubmit.contentWindow.document.body.innerHTML;
if(msg != ""){
alert(' :' + msg);
//$('#w2').window('close');
}
}
}
formのtargetをiframeに指します.すなわち、次のようにします.
<form name="frmUpload" method="POST" enctype="multipart/form-data" target="ifrmSubmit">
:<input type="file" id="fileImgSample" name="fileImgSample" ><br>
</form>
この問題が解決する.