2017-01-08 6 views
0

У меня проблема с загрузкой изображений на S3 с использованием multer и multer-s3 npm с node.js и express.node.js express multer issue uploading images to s3 using multer-s3 npm

Я прочитал документацию по multer и multer-s3 и последовал за учебниками, и искал в stackoverflow и других веб-сайтах, чтобы решить мою проблему, но не успел.

Это мой код клиента сторона:

<form method="post" enctype="multipart/form-data" action="/test"> 
<p> 
    <input type="text" name="title" placeholder="optional title"/> 
</p> 

<p> 
    <input type="file" name="upl"/> 
</p> 

<p> 
    <input type="submit"/> 
</p> 
</form> 

А вот мой код на стороне сервера:

var express = require('express'), 
router = express.Router(), 
aws = require('aws-sdk'), 
multer = require('multer'), 
multerS3 = require('multer-s3'), 
s3 = new aws.S3() 

aws.config = ({ 
    secretAccessKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 
    accessKeyId: 'XXXXXXXXXXXXXX' 
}); 

var upload = multer({ 
    storage: multerS3({ 
     s3: s3, 
     bucket: 'styleboxphotosbianor', 
     key: function (req, file, cb) { 
     console.log(file); 
     cb(null, file.originalname); //use Date.now() for unique file keys 
     } 
    }) 
}); 

//open in browser to see upload form 
router.get('/', function (req, res) { 
    res.render('multer'); 
}); 

//use by upload form 
router.post('/', upload.array('upl',1), function (req, res, next) { 
    res.send("Uploaded!"); 
}); 

module.exports = router; 

И я получил эту ошибку

TypeError: this.s3.upload is not a function 
at S3Storage.<anonymous> (/Users/magintosh/bianor/node_modules/multer-s3/index.js:150:26) 

Так мне нужна ваша помощь, мои друзья. Большое вам спасибо за то, что вы здесь!

ответ

3

Вы должны создать переменную «s3» только после настройки вашего модуля «aws». А также создание пакета «AWS» должен быть с «aws.config.update»

var express = require('express'), 
router = express.Router(), 
aws = require('aws-sdk'), 
multer = require('multer'), 
multerS3 = require('multer-s3'); 

aws.config.update({ 
    secretAccessKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 
    accessKeyId: 'XXXXXXXXXXXXXX' 
}); 

s3 = new aws.S3(); 

* Я предполагаю, что вы заменить значение для «secretAccessKey» и «accessKeyId» с действительным ключом от AWS и вы У вас есть учетная запись AWS (некоторые учебные пособия не упоминаются)

+0

Это сработало спасибо! –

+0

@ Rajan .. как я могу реализовать 'ffmpeg', чтобы преобразовать файл и загрузить его на' S3'? – Somename

+0

@Somename Я еще не делал этого, но следующий вопрос кажется хорошей отправной точкой http://stackoverflow.com/questions/28286798/nodejs-ffmpeg-sending-response-when-ffmpeg-is-completed http://stackoverflow.com/questions/43227600/how-to-access-uploaded-file-from-multer – Rajan

 Смежные вопросы

  • Нет связанных вопросов^_^