可以将其他数据与ajax中的文件一起发送吗?

时间:2016-04-19 20:01:31

标签: jquery ajax spring

我正在通过Ajax交互上传文件。我想一起发送信息,以便在服务器端构建路径。但我不知道是否有可能以及我该怎么做。

function uploadFD(){

    var oMyForm = new FormData();

    jQuery.each(jQuery('#file')[0].files, function(i, file) {
        oMyForm.append('file-'+i, file);
    });

    $.ajax({
        url: 'FileController',
        data: oMyForm,
        processData: false,
        contentType: false,
        type: 'POST',
        success: function(data){
                $('#Result').html(data.msg);
                $.messager.show({
                    title : 'Success',
                    msg : data.msg,
                    showType : 'show'
                });
        }
    });
}

控制器:

 @RequestMapping(method = RequestMethod.POST,  headers = "content-type=multipart/*")
   public void upload(MultipartHttpServletRequest request, 
           HttpServletResponse response) {

     response.setCharacterEncoding("UTF-8");

     Iterator<String> itr =  request.getFileNames();

     MultipartFile mpf = request.getFile(itr.next());
     System.out.println(mpf.getOriginalFilename() +" uploaded!");
     //... other stuff
}

我怎么能这样做?谢谢!

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。 FormData.append的第二个参数也可以是一个简单的字符串:

oMyForm.append('param', 'value');

您可以通过request.getParameter()访问服务器上的参数值:

String v = request.getParameter("param");