2017-05-17 16 views
2

私はexpress + multer-s3を使用してファイルをAWS S3サービスにアップロードしています。AWS-S3バケット用のmulter-S3でアップロードディレクトリを指定するにはどうすればよいですか?

は、次のコードを使用して、私はS3バケットではなく、直接バケットにファイルをアップロードすることができました。

バケット内のフォルダにアップロードします。

私はそうするオプションを見つけることができませんでした。ここで

は、S3は、常にフォルダを持っていない

AWS.config.loadFromPath("path-to-credentials.json"); 
var s3 = new AWS.S3(); 

var cloudStorage = multerS3({ 
    s3: s3, 
    bucket: "sample_bucket_name", 
    contentType: multerS3.AUTO_CONTENT_TYPE, 
    metadata: function(request, file, ab_callback) { 
     ab_callback(null, {fieldname: file.fieldname}); 
    }, 
    key: function(request, file, ab_callback) { 
     var newFileName = Date.now() + "-" + file.originalname; 
     ab_callback(null, newFileName); 
    }, 
}); 
var upload = multer({ 
    storage: cloudStorage 
}); 

router.post("/upload", upload.single('myFeildName'), function(request, response) { 
    var file = request.file; 
    console.log(request.file); 
    response.send("aatman is awesome!"); 
}); 

答えて

3

コードは(http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.htmlを参照)です。ファイル名に/で区切られた文字列を追加することで、フォルダをシミュレートします。

key: function(request, file, ab_callback) { 
    var newFileName = Date.now() + "-" + file.originalname; 
    var fullPath = 'firstpart/secondpart/'+ newFileName; 
    ab_callback(null, fullPath); 
}, 
+0

ありがとうございます!チャームのように働いていた... :) – Aatman

+0

ありがとう、完璧に働いている:) –

関連する問題