大家好,

由于 Jersey 错误,我正在尝试创建一个解决方法。 Jersey chop 了文件名中的斜杠。所以我想通过另一种方式发送我的文件。 对于 1 个文件,我找到了一个解决方案,如下:

function extractFilename(s){  
  // returns string containing everything from the end of the string  
  //   that is not a back/forward slash or an empty string on error 
  //   so one can check if return_value==='' 
  return (typeof s==='string' && (s=s.match(/[^\\\/]+$/)) && s[0]) || ''; 
}  
<input type="file" onchange="alert(extractFilename(this.value));"> 

但是对于多个文件它不起作用。我尝试通过邮寄方式发送它们: 用户界面:

<input type="file" id="files" name="files" multiple="multiple" /> 

JS:

function showUploadPanel() { 
 
            var files = $("#files")[0].files; 
       var form = createFormWithInputs("/user/document_upload/", files); 
 
             form.appendTo( document.body ).submit(); 
         } 
 
function createFormWithInputs(path, params) { 
            var form = $(document.createElement( "form" )) 
                .attr( {"method": "post", "action": path} ); 
 
            $.each( params, function(key,value){ 
                $.each( value instanceof Array? value : [value],  
                 function(i,val){ 
                    $(document.createElement("input")) 
                        .attr({ "type": "hidden", "name": "files", "value":  
                        val }) 
                        .appendTo( form ); 
                });  
            });  
 
            return form; 
        } 

Controller :

  @POST 
  @Path("/document_upload") 
  @Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
  public Response documentUpload(@FormParam("files") List<File> files) { 

我可以拥有这些文件,但它们是空的“[目标文件]”。没有任何内容。

我该怎么办?

预先感谢您, 恩德烈

请您参考如下方法:

您可以尝试使用 Jquery 插件 uploadify 来上传多个文件。 http://www.uploadify.com/demos/


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!