2015-06-29 62 views
3

目前我正在使用SailsJS創建自己的網絡應用程序。我使用skipper-s3將文件上傳到AWS S3。這是我的代碼:如何在S3中更改隨機上傳的文件名 - Sails.JS

req.file('uploadFile').upload({ 
    adapter: require('skipper-s3'), 
    key: 'KEY', 
    secret: 'SECRET', 
    bucket: 'BUCKET', 
    ACL: 'public-read' 
}, function whenDone(err, filesUploaded) { 
    if (err) { 
    console.log(err); 
    return res.negotiate(err); 
    } 

    var pt = { 
    user: req.session.User.id, 
    agency: req.param('id'), 
    path: filesUploaded[0].extra.Location, 
    filename: filesUploaded[0].filename 
    }; 

    Transaction.create(pt, function TransactionCreated(err, trans){ 
    if(err) return next(err); 

    return res.ok({ 
     files: filesUploaded, 
     textParams: req.params.all(), 
     trans: trans 
    }); 
    }) 
}); 

所以我已經把'路徑'和'原始文件名'放到MongoDB中。但S3內的'文件名'已經被'隨機名稱'改變了。那麼,上傳時是否可以更改爲「原始文件名」?或者當用戶想要下載時自動更改爲'原始文件名'?

問候, 約翰·埃爾默Semaya

回答

5

尋找skipper documentation後,我發現約saveAs選項。只需將其放入req.file('name').upload內部即可將其保存爲原始名稱或其他自定義名稱。

這是例如:

var newFilename = req.file('uploadFile')._files[0].stream.filename; 

req.file('uploadFile').upload({ 
    adapter: require('skipper-s3'), 
    key: 'KEY', 
    secret: 'SECRET', 
    bucket: 'BUCKET', 
    ACL: 'public-read, 
    saveAs: newFilename //this is how you put custom name when upload file 
}, 
    ... 
});