0

私のJSPページは次のようになります:

$(function() {  
    $("#file_upload").uploadify({  
        'height': 27,
        'width': 80,
        'buttonText':'浏览',
        'swf':'<%=basePath%>admin/tupian/js/uploadify.swf',
        'uploader': '<%=basePath%>Imguploadoper.img',
        'auto' : false,
        'fileTypeExts' : '*.jpg'
        });
});

ここに私のJavaコードがあります:

ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
try {
    //this line returns null
    List items = upload.parseRequest(request);
    Iterator itr = items.iterator();
    while (itr.hasNext()) {
        ......
    }
} catch (FileUploadException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
out.flush();
out.close();

upload.parseRequest(request)戻りますnull。理由は本当にわかりません。

4

1 に答える 1

0

これは、Struts2 でアップロードするときによくある間違いです。アクションでリクエストを解析しないでください。アクションに Java コードを記述したと思います。MultipartRequestWrapperしたがって、Struts2は、構成定数を使用している を介してマルチパート リクエストを処理します。

struts.multipart.parser=jakarta

これはマルチパート リクエスト アダプタJakartaMultiPartRequestに対応し、リクエストを解析struts.multipart.saveDirし、この定数が設定されていない場合はデフォルトで使用される、この定数によって定義された場所にファイルを配置するためにjavax.servlet.context.tempdir使用されます。

MultipartRequestWrapperを使用して取得できます。ファイルのアップロード方法をServletActionContext参照 してください。

次に、 の一部であるfileUploadinterceptordefaultStackは、maltipart 要求を使用して、受け入れられたすべてのファイル、受け入れられたファイル名、および受け入れられたコンテンツ タイプを取得し、それらをアクション コンテキストに配置します。

次に、そのアクション コンテキスト パラメータを使用して、の一部であるparamsinterceptordefaultStackをアクション プロパティに配置します。

マルチパート リクエストが によってラップされ、ラッパーがインスタンス化されるときDispatcher解析さsaveDirれると、アップロードがエラーなしで終了した場合、 でファイルを確認できます。

ファイルのアップロードを実行するには、必ずマルチパート リクエストを送信してください。つまり、formenctype属性が"multipart/form-data"あり、インターセプターが明示的に参照するアクションまたはインターセプターを暗黙的に使用するアクションに適用されdefaultStackます。アクションで、ファイル名、コンテンツ タイプ、およびファイルの getter/setter を使用してプロパティを作成します。アップロードが成功したら、アクション プロパティでファイルを確認します。

詳細については、次の例を実行してください。

于 2013-09-03T15:48:42.727 に答える