java - 文件上传慢 : Can I remove file attachment from multipart POST data on the fly and just submit form text fields?

标签 java javascript servlets upload websphere

我有一个常规的 JSP/Servlet/Java 网络应用程序,用于从移动设备上传图片。我正在使用 Apache Commons 库进行上传。应用程序托管在 WebSphere Application Server 7.0 上。

一切正常,用户可以上传几张总计 8MB 或更多的图像,如果他有非常好的/强信号/连接或良好的 WiFi。

当用户处于 3G/4G 信号/连接较差的位置时,就会出现问题。他得到诸如“非法状态异常”或一些超时错误之类的错误,并且在某些情况下,移动浏览器只是停留在提交页面上,进度条不再移动。

关于如何“优雅地”处理这个问题有什么建议吗?比如有没有办法在一段时间后进行干预,让用户可以选择提交没有文件附件的表单(即只提交表单文本字段)?也欢迎任何其他建议。

更新:下面的 setTimeout 解决方案对我有用。另一个缺失的部分是我必须发出“浏览器停止”命令来停止正在进行的原始提交,然后才能发出重新提交。否则,我的重新提交命令将被浏览器忽略。

最佳答案

这里的用例很简单 - 如果上传没有在 N 分钟内完成,使用 javascript 删除/清除该字段并重新发送表单。

您不需要在基本实现中控制上传,只需安全地假设如果您设置超时重新发送,如果第一次尝试成功并重新加载页面就不会发生。

jQuery 伪代码:

setTimeout(function(){
  $imageFieldNode.remove();
  $form.trigger('submit');
},30000);//after 30 seconds

更高级的方法是使用现成的解决方案进行受控上传。他们是这样工作的:

  1. 开始上传
  2. js 以 GET 查询的间隔提示服务器以获取已接收的内容的大小。
  3. 每次获取信息时 - 它都会报告进度。

您可以使用这些库做很多事情。

关于java - 文件上传慢 : Can I remove file attachment from multipart POST data on the fly and just submit form text fields?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13688474/

相关文章:

javascript - webpack 和 webpack 开发服务器 - 每次更改文件时运行 shell 命令

java - 如何限制对安全页面的直接访问?

java - 如何在java swing中同时执行两个线程?

javascript - 如何先追加,然后在 jquery 中运行 ajax?

java - 在排序列表中递归插入、删除检索

javascript - cropper 不是函数 on 不是函数

javascript - 通过 Jquery GET 调用将 JSON 对象传递给 Java Servlet

jakarta-ee - 为什么 Servlet 的 doGet() 方法将响应作为参数而不是返回值?

java - while循环中只执行一次

java - 从文件读取时如何将一行保存到链接列表中并将下一行保存到另一个列表中