Uploading large file to NodeJS webserver

前端 未结 3 1158
我寻月下人不归
我寻月下人不归 2021-02-09 03:04

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

相关标签:
3条回答
  • 2021-02-09 03:29

    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)

    0 讨论(0)
  • 2021-02-09 03:35
        var express =   require("express");
    
        var app =   express();
        var async = require('async');
        var fs = require('fs');
        var client = redis.createClient();
        var multiparty = require('multiparty');
        var util = require('util');
    
        app.post('/',function(req,res){
    
            var form = new multiparty.Form();
    
            form.parse(req, function(err, fields, files) {
    
                 client.get(fields.otp, function(err, reply) {
        var oldpath = files.file[0].path;
                              var newpath = path + files.file[0].originalFilename;
                              fs.rename(oldpath, newpath, function (err) {
                                if (err) throw err;
                                res.write('File uploaded and moved!');
                                res.end();
                              });
        }
        }
    
    
    
    app.listen(2001,function(){
        console.log("Server is running on port 2001");
    });
    
    0 讨论(0)
  • 2021-02-09 03:51

    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.

    0 讨论(0)
提交回复
热议问题