2017-01-08 10 views
0

multerとmulter-s3 npmをnode.jsとexpressで使用してS3に画像をアップロードする際に問題があります。node.js express multer問題multer-s3 npmを使用してs3に画像をアップロードする

私はmulterとmulter-s3のドキュメントを読んでチュートリアルに従い、stackoverflowやその他のWebサイトで検索して問題を解決しましたが、成功しませんでした。

これは私のクライアント側のコードです:

<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とあなたから実際のキーで「secretAccessKey」と「accessKeyId」の値を置き換えることを想定*「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(); 

する必要があります設定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

関連する問題