Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uploading large file to NodeJS webserver

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?

like image 286
jiminssy Avatar asked Nov 21 '16 15:11

jiminssy


2 Answers

Multer should work fine. It'll stream the data as it comes in over HTTP to a file on disk. It won't lock up your server. Then in your endpoint you have access to that file location and can do whatever you need with it.

like image 189
Randy Avatar answered Nov 16 '22 20:11

Randy


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)

like image 22
major-mann Avatar answered Nov 16 '22 19:11

major-mann