node.js 使用 multer-s3 npm 表达 multer 将图像上传到 s3 的问题
node.js express multer issue uploading images to s3 using multer-s3 npm
我在使用带有 node.js 和 express 的 multer 和 multer-s3 npm 将图像上传到 S3 时遇到问题。
我已经阅读了 multer 和 multer-s3 的文档并遵循了教程,并在 Whosebug 和其他网站上搜索了我的问题但没有成功。
这是我的客户端代码:
<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)
所以我需要你的帮助我的朋友们。非常感谢您的光临!
您必须仅在设置 "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 的实际密钥并且您确实有 AWS 帐户(一些教程未提及)
我在使用带有 node.js 和 express 的 multer 和 multer-s3 npm 将图像上传到 S3 时遇到问题。
我已经阅读了 multer 和 multer-s3 的文档并遵循了教程,并在 Whosebug 和其他网站上搜索了我的问题但没有成功。
这是我的客户端代码:
<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)
所以我需要你的帮助我的朋友们。非常感谢您的光临!
您必须仅在设置 "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 的实际密钥并且您确实有 AWS 帐户(一些教程未提及)