Node.js Express multer 使用 multer-s3 npm 将图像上传到 s3 时出现问题

标签 node.js express multer multer-s3

我在使用 multer 和 multer-s3 npm 以及 node.js 和express 将图像上传到 S3 时遇到问题。

我已阅读 multer 和 multer-s3 的文档并按照教程进行操作,并在 stackoverflow 和其他网站上搜索以解决我的问题,但没有成功。

这是我的客户端代码:

<form method="post" enctype="multipart/form-data" action="/test">
<p>
    <input type="text" name="title" placeholder="optional title"/>
</p>

<p>
    <input type="file" name="upl"/>
</p>

<p>
    <input type="submit"/>
</p>
</form>

这是我的服务器端代码:

var express = require('express'),
 router = express.Router(),
 aws = require('aws-sdk'),
 multer = require('multer'),
 multerS3 = require('multer-s3'),
 s3 = new aws.S3()

 aws.config = ({
  secretAccessKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  accessKeyId: 'XXXXXXXXXXXXXX'
});

var upload = multer({
   storage: multerS3({
       s3: s3,
       bucket: 'styleboxphotosbianor',
       key: function (req, file, cb) {
         console.log(file);
         cb(null, file.originalname); //use Date.now() for unique file keys
      }
  })
});

//open in browser to see upload form
router.get('/', function (req, res) {
   res.render('multer');
});

//use by upload form
router.post('/', upload.array('upl',1), function (req, res, next) {
  res.send("Uploaded!");
});

module.exports = router;

我收到了这个错误

TypeError: this.s3.upload is not a function
at S3Storage.<anonymous> (/Users/magintosh/bianor/node_modules/multer-s3/index.js:150:26)

所以我需要你们的帮助,我的 friend 们。非常感谢您来到这里为我们服务!

最佳答案

只有在设置“aws”模块后,您才必须创建“s3”变量。 并且设置“aws”包应该使用“aws.config.update”

var express = require('express'),
 router = express.Router(),
 aws = require('aws-sdk'),
 multer = require('multer'),
 multerS3 = require('multer-s3');

 aws.config.update({
  secretAccessKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  accessKeyId: 'XXXXXXXXXXXXXX'
});

 s3 = new aws.S3();

*我假设您将“secretAccessKey”和“accessKeyId”的值替换为来自 AWS 的实际 key ,并且您确实拥有 AWS 帐户(有些教程未提及这一点)

关于Node.js Express multer 使用 multer-s3 npm 将图像上传到 s3 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41532708/

相关文章:

javascript - 如何修复 CLIENT_MISSING_INTENTS 错误?

node.js - Node js 客户端的响应为空

javascript - Faker.js 生成随机路径不起作用

javascript - 类型错误 : object is not a function Node js Node Authentication

node.js - 使用 mongoose 的 mongodb 连接超时

node.js - 有没有办法使用express-jwt在nodejs中不 protected 端点中访问jwt用户信息?

node.js - 是否有任何框架可以在 NodeJS 中创建适当的 REST(即超媒体)接口(interface)?

rest - 为什么我的上传文件 POST 不能使用 NEST.JS 和 Multer?

javascript - Multer file.filename 和 file.path 未定义

javascript - 使用 express.js 和 multer 使用 ajax 进行简单的多部分文件上传