0

J'ai été en mesure de mettre en place un processus pour télécharger une seule image à la fois en utilisant NodeJS/Express/Amazon S3/Multer. Cela fonctionne parfaitement. J'ai essayé de changer le code pour permettre aux utilisateurs de télécharger plus d'une image à la fois. Jusqu'à présent, j'ai été très infructueux. Comment changer mon code ci-dessous pour permettre le téléchargement de plusieurs images à la fois? Merci!Télécharger plusieurs images - 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; 
    }...... 

Répondre

2

vous avez fait le plus dur, tout ce que u ont à faire est de modifier l'entrée de votre fichier html pour en faire accepter plusieurs fichiers comme si

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

et modifier le nombre de fichiers dans le tableau pour le nombre maximal de fichiers que vous wan pour télécharger

de

upload.array('image', 1) 

à

upload.array('image', x) 

(x) est le nombre maximum de fichiers par téléchargement

EDIT1: mise à jour

est ici genre d'exemple complet & pour éviter "problème de l'entité trop importante"

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 
     }); 

    });