如何在S3中更改随机上传的文件名 - Sails.JS

j.e*_*mer 3 amazon-s3 sails.js skipper

目前我正在使用SailsJS创建自己的网络应用程序.我正在使用skipper-s3将文件上传到AWS S3.这是我的代码:

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
    });
  })
});
Run Code Online (Sandbox Code Playgroud)

所以我已经将'path'和'original filename'放到了MongoDB中.但S3中的'文件名'已经用'随机名'改变了.那么,上传时是否可以更改为"原始文件名"?当用户想要下载时,OR会自动更改为"原始文件名"吗?

此致,John Elmer Semaya

j.e*_*mer 6

在查看了船长文档后,我找到了有关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
},
   ...
});
Run Code Online (Sandbox Code Playgroud)