【问题标题】:Chrome back button terminates upload stream unexpectedlyChrome 后退按钮意外终止上传流
【发布时间】:2012-04-19 20:23:48
【问题描述】:

我正在为用户提供基于表单的文件上传(一次一个)以及 ajax 更新/进度条。如果他们离开,我想提醒他们任何当前的上传都将被取消。以下代码实现了该目标,但 Chrome (v.18) 除外。如果单击 Chrome 中的后退按钮,文件上传流将立即终止,并从 commons.fileupload 库中抛出 org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly

我找不到任何特定于此问题的信息,但有人知道这是否是我现在必须忍受的事情吗?谢谢。

编辑:我应该补充一点,Chrome 仍然显示“离开页面”对话框,但此时上传已经停止,因此答案根本不会影响它。单击 Chrome 中的链接不会停止上传,并且会按预期运行。

window.onbeforeunload = 
    function(event) {
        if (upload_in_progress) {
            var msg = "You are uploading a file." +
              "If you leave this page the upload " +
              "will be cancelled.\n\nLeave page?";
            var event = event || window.event;
            if (event) { event.returnValue = msg; }
            return msg;
        }
    };

【问题讨论】:

  • 点击链接...不会停止上传?
  • 不。我收到对话框,可以按预期保持/离开页面,除非我选择离开页面,否则向上继续。

标签: javascript google-chrome onbeforeunload


【解决方案1】:

在 Chrome 和 Safari 中,附加到 beforeunload 事件的函数必须始终返回字符串值(向用户显示的消息)。

【讨论】:

  • 上面的代码就是这样做的。如果有事件,则有一条消息,并且该消息按预期显示。问题是(如上所述)在 Chrome 中,上传流在向用户显示消息之前就停止了,因此用户的回答是无关紧要的。
  • 上面的代码并不总是返回字符串。它是有条件的,但它应该总是返回字符串。
猜你喜欢
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多