Uploading large file to NodeJS webserver

jiminssy picture jiminssy · Nov 21, 2016 · Viewed 14k times · Source

I am serving up my web application using NodeJS server (ExpressJS) currently. One of the new requirements is for the users to be able to upload large videos (potentially in gigs) to the server. They will later then be able to download them again. Could I achieve this with the current stack?

I came across tutorials using Multer JS with "multipart/form-data" specified by the front-end. If I use this, would my Express be able to serve up other HTTP requests while writing a giant single video file to the server's disk?

Answer

major-mann picture major-mann · Nov 21, 2016

Having done this myself (~20GB files, without multer) I can recommend the following (Probably most of which you have considered, but for completeness):

  1. Choose an appropriate upload control (or write your own, but basically something that chunks up the data is best. I used plupload I think)

  2. On the server make an API to handle the received chunk data, and write it out to a temp location during upload (You may want to hash and check individual pieces as well).

  3. Once upload complete, check file (I used a hash generated by the client, and checked it against the uploaded data)