blueimp jquery file upload Empty file upload result struts2, fileitems empty

匿名 (未验证) 提交于 2019-12-03 08:54:24

问题:

I am using Blueimp and server side is Java, Struts2. I couldn't find examples using Java, anyway I managed to use the sample code, but I am getting "Empty file upload result" when I am trying to upload a single file also. The HTML part is the same, I am not pasting here as it may go lengthy.

The jQuery is:

$(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 () {                 $('<span class="alert alert-error"/>')                     .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});                 }             });         });     }  }); 

The action:

@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<File> uploads = new ArrayList<File>();     private List<String> uploadFileNames = new ArrayList<String>();     private List<String> uploadContentTypes = new ArrayList<String>();      public List<File> getUploads() {         return uploads;     }      public void setUploads(List<File> uploads) {         this.uploads = uploads;     }      public List<String> getUploadFileNames() {         return uploadFileNames;     }      public void setUploadFileNames(List<String> uploadFileNames) {         this.uploadFileNames = uploadFileNames;     }      public List<String> getUploadContentTypes() {         return uploadContentTypes;     }      public void setUploadContentTypes(List<String> 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;     }  } 

As I said, I have changed the action file, but I still get all empty values for files, and in the Firebug's GET response I see "Request is not multipart, please 'multipart/form-data' enctype for your form"

Thanks & Regards.

回答1:

You may use fileUpload interceptor to parse your "multipart/form-data" requests. It uses the same commons-fileupload implementation wrapped by the MultipartRequestWrapper in prepare operations by the Struts2 dispatcher. More about how to file upload with examples you could find here.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!