java:文件在ajax表单数据提交时不可用

时间:2015-06-24 11:25:20

标签: java jsp

我正在检索我的表单数据并使用ajax将其提交到服务器。 该文件不可用。 其他现场数据可用。

$('#apply-form').submit(function(e){

    var formData = new FormData($(this)[0]);

      $.ajax({
            url: '/public/listener?CO=ATV',
            type: 'POST',
            dataType: 'json',
            data: formData,
            success: function (data) {
                console.log(data);
            },
            cache: false,
            contentType: false,
            processData: false
        });

        return false;


});

这就是我在服务器端访问请求的方式

FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);

List<Object> list = upload.parseRequest(this.request);

if(list != null){

    for(Object fileItem : list){

        FileItem item = (FileItem)fileItem;                 
        if(! (item.isFormField()) )
                this.item =item;            
    }   
}

任何线索为什么文件为空?也许我错误地访问它,如果是这样,你能告诉我正确的方法。

1 个答案:

答案 0 :(得分:0)

您无法使用jquery发布文件。此外,我认为没有理由在你的情况下这样做。只需将客户端更改为:

 <form id="apply-form" action="/public/listener?CO=ATV" method="post" enctype="multipart/form-data">
 your form
</form>

发表你的表格:

$( "#other" ).click(function() {
   $('#apply-form').submit(function( event ) {
    console.log(event);
   });
});

注意:如果您不阻止默认活动,则表单将由浏览器发布。

修改 实际上用html5你可以做到这一点。查看this帖子