node.js - 我想将扩展名的文件上传到 aws s3,但它不会上传扩展名的文件

标签 node.js amazon-web-services amazon-s3 amazon-ec2

这是我的 File Upload.js,但是当我上传文件时,它会成功上传,但缺少扩展名,我想上传带有扩展名的文件。请帮助我

const aws = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');
aws.config.update({
    secretAccessKey: '', 
    accessKeyId: '',  
    region: 'us-east-2'
});

const s3 = new aws.S3({ })

const fileFilter = (req, file, cb) => {
    if (file.mimetype === 'music/AAC' || file.mimetype === 'music/AVI' ||file.mimetype === 'music/mp3' ||file.mimetype === 'music/AVI') {
        cb(null, true)
    } else {
        cb(new Error('Invalid Mime Type, only JPEG and PNG'), false);
    }
  }

const upload = multer({

    storage: multerS3({
    fileFilter,
      s3,
      bucket: 'admin-song',
      acl: 'public-read',
      metadata: function (req, file, cb) {
        cb(null, {fieldName: 'TESTING_META_DATA!'});
      },
      key: function (req, file, cb) {
        cb(null, Date.now().toString())
      }
    })
  })

module.exports = upload;

这是我的 Api 端点,请指导我

 app.post('/v1/admin/upload/song',function(req, res) {

        singleUpload(req, res, function(err) {

          if (err) {
            return res.status(422).send({errors: [{title: 'File Upload Error', detail: err.message}] });
          }
          console.log(res)
          return res.json({'imageUrl': req['file'].location});
        });
      });

最佳答案

您必须在 multer 函数中添加您想要的任何字符串作为文件名。您可以使用以下方法将文件扩展名添加到文件

const upload = multer({

    storage: multerS3({
    fileFilter,
      s3,
      bucket: 'admin-song',
      acl: 'public-read',
      metadata: function (req, file, cb) {
        cb(null, {fieldName: 'TESTING_META_DATA!'});
      },
      key: function (req, file, cb) {
        cb(null, Date.now().toString() + '.' + fileExtension)
      }
    })
  })

关于node.js - 我想将扩展名的文件上传到 aws s3,但它不会上传扩展名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54364431/

相关文章:

amazon-web-services - 从 Elastic Beanstalk 应用程序公开由 lambda 函数创建的文件

amazon-web-services - 连接ImportValue和参数存储值

php - 使用非英语值更新 Amazon S3 对象的元数据

node.js - 如何在使用 swagger-ui-express 和 swagger-jsdoc 时正确使用 swagger 文件中的 $ref

node.js - 如何使用内部 IP 从 Google Cloud Functions 连接到我的 Compute Engine MongoDB 实例?

amazon-web-services - 可以创建策略并共享该策略以在多个帐户之间发挥作用

python - 使用并发.futures 上传 200 万个文件(每个文件大约 30 KB 从 EC2 到 S3),ThreadPool 需要大量时间

encoding - Meteor:将图像从 url 保存到 AWS S3 存储

javascript - node.js 的作业队列

javascript - zeromq w/Electron : Could not locate the bindings file