2015-06-29 1 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 
}, 
    ... 
});