我想用JSP/JQuery做一個文件上傳,但我必須提交之前做幾個Ajax調用。文件上傳失敗後,jquery preventDefault
但是,在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?
{
...
}
}
爲什麼你不只是使用'input type ='button''元素?你不必防止提交部分,仍然可以在最後調用'$(「form」)。submit();'。我不確定它是否能解決您的問題。 – gpgekko
如果我在將一個函數綁定到'input type ='button''後提交表單,則會出現同樣的問題。該文件或其他輸入字段在服務器端不可用。似乎任何干擾破壞文件上傳提交? –