Chrome后退按钮意外终止上传流

时间:2012-04-19 20:23:48

标签: javascript google-chrome onbeforeunload

我正在为用户提供基于表单的文件上传(一次一个)和ajax更新/进度条。如果他们离开,我想给他们一个抬头,任何当前的上传将被取消。以下代码实现了该目标,但Chrome(第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;
        }
    };

1 个答案:

答案 0 :(得分:0)

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