为什么只有 Edge 收到我的上传错误消息?
Why is my upload error message only received by Edge?
我使用 MultipartConfig 通过 Servlet 处理文件上传并在文件过大时发送错误消息:
private void doUpload(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
Part filePart;
try {
filePart = request.getPart("file");
} catch (IllegalStateException e) {
System.out.println("File To Large");
response.setStatus(HttpServletResponse.SC_REQUEST_ENTITY_TOO_LARGE);
PrintWriter writer = response.getWriter();
writer.println("failure:filetobig");
writer.flush();
writer.close();
return;
}
... (file handling) ...
}
如果我将 Servlet 与 Jquery-File-Upload(基于 Ajax)一起使用并且文件大小超过 maxFileSize,Edge returns 是正确的错误消息状态代码为 413,就绪状态为 4。如果我对 Firefox 或 Chrome 执行相同的操作,我会收到状态代码 0,就绪状态 0,并且开发工具中的网络选项卡显示没有收到答复。
image
在 Firefox 中,比特率从负变为正,Chrome return 一段时间后为 NaN。无论我使用哪种浏览器,都会执行 System.out.println("File To Large");
。如果我使用 cURL 执行上传请求,正确的错误消息是 returned.
我的 MultipartConfig 来测试这个:
@MultipartConfig(maxFileSize = 1024 * 1024 * 30, // 30 MB
maxRequestSize = 1024 * 1024 * 1000 // 1000 MB
)
我想通了:服务器重置了连接,因为 maxSwallowSize 设置得太低了。
参见:https://tomcat.apache.org/tomcat-8.0-doc/config/http.html
奇怪的是 Edge 不关心这个并显示正确的消息!?
我使用 MultipartConfig 通过 Servlet 处理文件上传并在文件过大时发送错误消息:
private void doUpload(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
Part filePart;
try {
filePart = request.getPart("file");
} catch (IllegalStateException e) {
System.out.println("File To Large");
response.setStatus(HttpServletResponse.SC_REQUEST_ENTITY_TOO_LARGE);
PrintWriter writer = response.getWriter();
writer.println("failure:filetobig");
writer.flush();
writer.close();
return;
}
... (file handling) ...
}
如果我将 Servlet 与 Jquery-File-Upload(基于 Ajax)一起使用并且文件大小超过 maxFileSize,Edge returns 是正确的错误消息状态代码为 413,就绪状态为 4。如果我对 Firefox 或 Chrome 执行相同的操作,我会收到状态代码 0,就绪状态 0,并且开发工具中的网络选项卡显示没有收到答复。 image
在 Firefox 中,比特率从负变为正,Chrome return 一段时间后为 NaN。无论我使用哪种浏览器,都会执行 System.out.println("File To Large");
。如果我使用 cURL 执行上传请求,正确的错误消息是 returned.
我的 MultipartConfig 来测试这个:
@MultipartConfig(maxFileSize = 1024 * 1024 * 30, // 30 MB
maxRequestSize = 1024 * 1024 * 1000 // 1000 MB
)
我想通了:服务器重置了连接,因为 maxSwallowSize 设置得太低了。
参见:https://tomcat.apache.org/tomcat-8.0-doc/config/http.html
奇怪的是 Edge 不关心这个并显示正确的消息!?