2017-05-17 1 views
2

Ich verwende Express + Multer-s3, um Dateien in den AWS S3-Dienst hochzuladen.Wie wird das Upload-Verzeichnis in Multer-S3 für den AWS-S3-Bucket angegeben?

Mit dem folgenden Code konnte ich die Dateien auf S3 Bucket aber direkt in den Eimer hochladen.

Ich möchte, dass sie in einem Ordner im Bucket hochgeladen werden.

Ich konnte die Option nicht finden, dies zu tun.

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

Antwort

3

S3 nicht immer Ordner haben (siehe http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.html). Es simuliert Ordner, indem es Zeichenketten hinzufügt, die durch/getrennt sind.

z.B.

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

Vielen Dank !! Arbeitete wie Charme ... :) – Aatman

+0

Danke Mann, funktioniert perfekt :) –

Verwandte Themen