jquery preventDefault后文件上传失败

时间:2014-01-24 10:59:58

标签: java jquery jsp file-upload upload

我正在尝试使用JSP / JQuery进行文件上传,但我必须在提交之前进行一些Ajax调用。

但是,在进行Ajax调用并提交表单后,表单字段在服务器端都是空的?

如果我不调用e.preventDefault(),那么一切正常,但我需要在提交前进行Ajax调用!

由于

CLIENT SIDE:

<form method="post" action="accept.htm" enctype="multipart/form-data">
  ...
  <input type="file" name="thefile" id="thefile"/>
  <input type="submit" name="uploadfile" id="uploadfile" value="Upload File"/>
  ...
</form>

$("form").on("submit", function(e) 
{
    e.preventDefault(); // stop the form being submitted for now

    // make a few ajax calls
    ...

    // submit the form in ajax success callback
    $("form").unbind("submit");
    $("form").submit();
}

SERVER SIDE:

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

ServletFileUpload servletFileUpload = new ServletFileUpload();
servletFileUpload.setFileSizeMax(Long.valueOf(maxUploadFileSize));
servletFileUpload.setProgressListener(new UploadProgressListener());
FileItemIterator fileItemIterator = servletFileUpload.getItemIterator(request);

if(isMultipart)
{
    while(fileItemIterator.hasNext())  <--- empty?
    {
    ...
    }
}

2 个答案:

答案 0 :(得分:0)

试试这个

$("form").on("submit", function(e) 
{
    // make a few ajax calls
    ...

    // finally submit
    $("form").unbind("submit");
    $("form").submit();
    e.preventDefault(); // stop the form being submitted for now
}

e.preventDefault();发送返回false可能会与ajax一起发布

答案 1 :(得分:0)

原来我在一个禁用文件输入字段的Ajax调用中有一个JQuery语句。删除后,文件在服务器端再次可用。因此,禁用文件输入字段会导致它因某种原因变得不可用。