簡體   English   中英

上傳多張圖片 - NodeJS 和 Amazon S3

[英]Upload multiple images - NodeJS & Amazon S3

我已經能夠使用 NodeJS/Express/Amazon S3/Multer 設置一次上傳單個圖像的過程。 它完美地工作。 我一直在嘗試更改代碼以允許用戶一次上傳多個圖像。 到目前為止,我一直很不成功。 我將如何更改下面的代碼以允許一次上傳多個圖像? 謝謝!

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

你已經完成了困難的部分,你所要做的就是修改你的 html 文件輸入,使其接受多個文件,像這樣

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

並將數組中的文件數更改為您要上傳的最大文件數

來自

upload.array('image', 1)

upload.array('image', x)

其中 (x) 是每次上傳的最大文件數

EDIT1:更新

這是一個完整的例子 & 避免“太大的實體問題”

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

    });

https://www.npmjs.com/package/multer-s3

您可以使用此 npm 包進行 aws-s3 上傳。 我使用了相同的並保存文件沒有任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM