2017-05-17 8 views
2

J'utilise express + multer-s3 pour télécharger des fichiers vers le service AWS S3. En utilisant le code suivant, j'ai été en mesure de télécharger les fichiers S3 Bucket mais directement dans le seau.Comment spécifier le répertoire de téléchargement dans multer-S3 pour le compartiment AWS-S3?

Je veux qu'ils soient téléchargés dans un dossier à l'intérieur du compartiment.

Je n'ai pas réussi à trouver l'option pour le faire.

Voici le code

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

Répondre

3

S3 ne sont pas toujours des dossiers (voir http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.html). Il va simuler des dossiers en ajoutant une chaîne séparée par/à votre nom de fichier.

par exemple.

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

Merci beaucoup !! A travaillé comme le charme ... :) – Aatman

+0

Merci l'homme, fonctionne parfaitement :) –