0

Ich konnte einen Prozess einrichten, um jeweils ein einzelnes Bild mit NodeJS/Express/Amazon S3/Multer hochzuladen. Es funktioniert perfekt. Ich habe versucht, den Code so zu ändern, dass Nutzer mehr als ein Bild gleichzeitig hochladen können. Bis jetzt war ich sehr erfolglos. Wie würde ich meinen Code ändern, damit mehrere Bilder gleichzeitig hochgeladen werden können? Vielen Dank!Mehrere Bilder hochladen - NodeJS & Amazon S3

aws.config.update({ 
    secretAccessKey: '*****************', 
    accessKeyId: '******', 
    region: 'us-east-2' 
}); 

var s3 = new aws.S3(); 


var upload = multer({ 
    storage: multerS3({ 
     s3: s3, 
     bucket: 'myfiles', 
     key: function (req, file, cb) { 
      var fileExtension = file.originalname.split(".")[1]; 
      var path = "uploads/" + req.user._id + Date.now() + "." + fileExtension; 
      cb(null, path); 
     } 
    }) 
}); 


router.post("/", upload.array('image', 1), function(req, res, next){ 

     var filepath = undefined; 

    if(req.files[0]) { 
     filepath = req.files[0].key; 
    }...... 

Antwort

2

Sie den harten Teil getan haben, alles, was u tun müssen, ist Ihre HTML-Datei-Eingabe zu ändern, um es wie so mehrere Dateien zu machen akzeptieren

<input type="file" name="img" multiple> 

und die Anzahl der Dateien in der ändern Array auf die maximale Anzahl von Dateien, die Sie wan

von

upload.array('image', 1) 

bis zum hochladen

upload.array('image', x) 

wo (x) ist die maximale Anzahl von Dateien pro Upload

EDIT1: update

Hier ist eine Art voll Beispiel & "zu groß Entität Thema"

zu vermeiden
var express = require("express"); 
var app = express(); 

var multer = require('multer'); 
var cookieParser = require('cookie-parser'); 
var path = require('path'); 

var router = express.Router(); 
app.use("/", router); 

app.use(bodyParser.json({limit: "50mb"})); 
app.use(cookieParser()); 
var urlencodedParser = bodyParser.urlencoded({ 
    extended: true, 
    parameterLimit: 50000 
}); 

// in case u want to c the requsted url 
router.use(function(req, res, next) { 
    console.log('Request URL: ', req.originalUrl); 
    next(); 
}); 

//the files will b uploaded to folder name uploads, html file input name is uploadedFile 
app.post('/your/route', urlencodedParser, function(req, res) { 

      var storage = multer.diskStorage({ 
       destination: function(req, file, callback) { 
        callback(null, './uploads'); 
       }, 
       filename: function(req, file, callback) { 
        var fname = file.fieldname + '-' + Date.now() + path.extname(file.originalname); 
        callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname)); 
       } 
      }); 
      var upload_photos = multer({ 
       storage: storage 
      }).array('uploadedFile', 3); 
      upload_photos(req, res, function(err) { 
      // uploading files 
     }); 

    });