blueimp jquery文件上传空文件上传结果struts2,文件项目为空

我使用的是Blueimp,服务器端是Java,Struts2。 我无法找到使用Java的示例,无论如何我设法使用示例代码,但当我尝试上传单个文件时,我得到"Empty file upload result" 。 HTML部分是相同的,我不会在这里粘贴,因为它可能会很长。

jQuery是:

 $(document).ready(function () { 'use strict'; // Initialize the jQuery File Upload widget: $('#fileupload').fileupload(); // Enable iframe cross-domain access via redirect option: $('#fileupload').fileupload( 'option', 'redirect', window.location.href.replace( /\/[^\/]*$/, '/cors/result.html?%s' ) ); if (window.location.hostname === 'blueimp.github.com') { // Demo settings: $('#fileupload').fileupload('option', { url: '//jquery-file-upload.appspot.com/', maxFileSize: 5000000, acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, process: [ { action: 'load', fileTypes: /^image\/(gif|jpeg|png)$/, maxFileSize: 20000000 // 20MB }, { action: 'resize', maxWidth: 1440, maxHeight: 900 }, { action: 'save' } ] }); // Upload server status check for browsers with CORS support: if ($.support.cors) { $.ajax({ url: '//jquery-file-upload.appspot.com/', type: 'HEAD' }).fail(function () { $('') .text('Upload server currently unavailable - ' + new Date()) .appendTo('#fileupload'); }); } } else { // Load existing files: $('#fileupload').each(function () { var that = this; $.getJSON(this.action, function (result) { if (result && result.length) { $(that).fileupload('option', 'done') .call(that, null, {result: result}); } }); }); } }); 

那个行动:

 @Namespace("/") @InterceptorRefs({ @InterceptorRef("fileUpload"), @InterceptorRef("basicStack") }) public class UploadAction extends ActionSupport implements ServletRequestAware, ServletResponseAware{ HttpServletRequest req; HttpServletResponse res; // private File fileUploadPath=new File("c:\\temp\\"); private List uploads = new ArrayList(); private List uploadFileNames = new ArrayList(); private List uploadContentTypes = new ArrayList(); public List getUploads() { return uploads; } public void setUploads(List uploads) { this.uploads = uploads; } public List getUploadFileNames() { return uploadFileNames; } public void setUploadFileNames(List uploadFileNames) { this.uploadFileNames = uploadFileNames; } public List getUploadContentTypes() { return uploadContentTypes; } public void setUploadContentTypes(List uploadContentTypes) { this.uploadContentTypes = uploadContentTypes; } @Action(value="upload", results = { @Result(name="success", type="json") }) public String uploadFiles() throws IOException { System.out.println("upload1"); System.out.println("files:"); for (File u: uploads) { System.out.println("*** "+u+"\t"+u.length()); } System.out.println("filenames:"); for (String n: uploadFileNames) { System.out.println("*** "+n); } System.out.println("content types:"); for (String c: uploadContentTypes) { System.out.println("*** "+c); } System.out.println("\n\n"); if (!ServletFileUpload.isMultipartContent(req)) { throw new IllegalArgumentException("Request is not multipart, please 'multipart/form-data' enctype for your form."); } return SUCCESS; } @Override public void setServletRequest(HttpServletRequest hsr) { this.req=hsr; } @Override public void setServletResponse(HttpServletResponse hsr) { this.res=hsr; } } 

正如我所说的,我已经更改了操作文件,但我仍然获得文件的所有空值,并且在Firebug的GET响应中,我看到"Request is not multipart, please 'multipart/form-data' enctype for your form"

感谢和问候。

您可以使用fileUpload拦截器来解析"multipart/form-data"请求。 它在Struts2调度程序的准备操作中使用由MultipartRequestWrapper包装的相同commons-fileupload实现。 有关如何使用您在此处找到的示例进行文件上传的更多信息