miniserve icon indicating copy to clipboard operation
miniserve copied to clipboard

Save uploaded file atomically

Open ubruhin opened this issue 11 months ago • 2 comments

It seems when uploading a file, the file is immediately created and any incoming data is written into it. However, this means the file is incomplete/invalid during the upload and there's no way to know as a user (or, in my case a tool processing the uploaded files) whether a file is complete or not. I didn't check what happens when an upload is aborted/fails, is the incomplete file then even left over?

Anyway, IMHO the upload would be much safer if the file is saved atomically. Just as a simple idea, the upload could be performed into a temporary file (e.g. ending with ~) and renamed when the upload succeeded. This way it is visible for humans and detectable by tools which files are incomplete.

ubruhin avatar Mar 21 '24 17:03 ubruhin

I like this suggestion and agree with you reasoning. I won't have time to tend to this, though. I'd be very happy to review a pull request, though.

svenstaro avatar Mar 28 '24 01:03 svenstaro

Hi, I have been trying add and to test upload files with progress bar. I use external vanilla JS and CSS file to use XHR to upload files. If it's complete, I will submit PR after merge to main code without external file. Here is it look like now: 318087142-53a9410f-a05f-4b09-975b-7299db14575f

chaibiq avatar Mar 30 '24 08:03 chaibiq