2012-04-19 49 views
1

我提供用户基于表单的文件上传(一次一个)与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; 
     } 
    }; 
+0

点击链接...不停止上传? – gengkev 2012-04-21 19:23:08

+0

没有。我得到对话框,并可以按预期保持/离开页面,除非我选择离开页面,否则继续。 – randall 2012-04-22 00:43:05

回答

0

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

+0

上面的代码就是这么做的。如果发生事件,则会显示一条消息,并按预期显示该消息。问题是(如上所述)在Chrome中上传流在向用户显示消息之前停止,因此用户的答案是无关紧要的。 – randall 2013-10-21 17:06:39

+0

上面的代码并不总是返回字符串。这是有条件的,但它应该*总是*返回字符串。 – takeshin 2013-10-22 08:43:07