servlet在验证失败后中止多部分表单数据提交



我有一个jsp页面,它允许用户向servlet提交多部分表单数据。这个多部分表单有Order Id字段和另一个用于上传1GB视频的字段。现在在服务器上,我对订单Id进行验证,以检查订单Id是否有效。如果订单Id无效,我只从doPost方法返回。现在的问题是,即使我从doPost返回这个多部分表单数据,也会继续发送多部分视频文件,除非它将整个文件上传到servlet。我只想在订单id验证失败后立即中止此多部分表单提交,而无需等待将整个视频文件上传到servlet。我尝试使用中止方法,但eclipse没有显示任何建议。

有两种解决方案可以尝试:

  1. 在方法的第一行验证OrderId,然后再进一步处理文件,如果无效则返回。此外,您还可以使用@MultipartConfig(fileSizeThreshold = 1024 * 1024, maxFileSize = 1024 * 1024 * 5, maxRequestSize = 1024 * 1024 * 5 * 5)添加文件大小验证。我试过了,这很管用
  2. 添加验证OrderIdonBlur事件的web服务。这将检查orderId是否有效。它将减少最初提交的表格。这可以通过在页面上使用AJAX来完成

如果这些都没有帮助,请分享您的代码片段,以便我可以进一步分析。

您可以尝试类似的方法,首先启动AJAX来验证OrderID,如果servlet返回"true",则继续上传视频。否则将忽略下一个操作。

var xhttp1 = new XMLHttpRequest();
xhttp1.open("POST", "YOUR_SERVLET", false);
xhttp1.onreadystatechange = function () {
if (xhttp1.readyState == 4) {
if (xhttp1.status == 200) {
if (xhttp1.responseText == 'true') {
// SEND YOUR 1 GB FILE
var xhttp2 = new XMLHttpRequest();
xhttp2.open("POST", "YOUR_SERVLET", false);
xhttp2.onreadystatechange = function () {
if (xhttp2.readyState == 4) {
if (xhttp2.status == 200) {
if (xhttp2.responseText == 'true') {
// YOUR VIDEO UPLOADED SUCCESSFULLY
}
}
}
};
xhttp2.setRequestHeader("Content-type", "multipart/form-data");
xhttp2.send(formData);

} else {
// ORDER ID INVALID
}
}
}
};
xhttp1.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp1.send("OrderId=1");

最新更新