Opened 8 years ago

Closed 8 years ago

#2018 closed defect (fixed)

It is not possible to abort a file upload

Reported by: Nicklas Nordborg Owned by: everyone
Priority: minor Milestone: BASE 3.9
Component: web Version:
Keywords: Cc:

Description (last modified by Nicklas Nordborg)

Clicking on the "Abort" button when uploading a file seems to restart the upload instead of aborting it.

The text "The upload was aborted" appears in the window.

Closing the window seems to stop the upload.

It seems to "not work" a bit differently in IE/Firefox.

Firefox will restart the upload while IE simply stops without any message or closing the dialog.

Change History (3)

comment:1 by Nicklas Nordborg, 8 years ago

Description: modified (diff)

comment:2 by Nicklas Nordborg, 8 years ago

I think this may be an issue with the HTTP 1.1 protocol. Checking all logs on the server side it seems like Tomcat is sending a response when the user clicks "Abort". The response seem to be ignored by Firefox which instead makes a new identical upload request. Modifying the file upload servlet to send an error message immediately shows that Firefox is trying several times before giving up.

This document contains some information about pipelining HTTP requests which may or may not explain what is going on.

I think this means that it is not just the "Abort" functionality that is not working. All other error handling is also not working.

comment:3 by Nicklas Nordborg, 8 years ago

Resolution: fixed
Status: newclosed

(In [7169]) Fixes #2018: It is not possible to abort a file upload

Sort of... I really don't know how to ensure the abort is happening from the server-side. Instead we are simply sending the "Abort" command to the server and then closing the upload dialog. This should work in most cases. There is a race-condition between the "Abort" message and finalizing the file upload so in some cases the file may have been uploaded successfully despite giving the user the impression that it was aborted.

Note: See TracTickets for help on using tickets.