使用 aws-sdk 和 Node/Express 上传到 S3
Upload to S3 using aws-sdk and Node/Express
我一直在按照本指南 Simple file upload to S3 using aws-sdk and Node/Express 尝试让用户通过 S3 上传图像。出于某种原因,我无法让它工作。我将如何修复我的代码以更正错误?
我得到的错误是:类型错误:无法读取未定义的 属性“0”。
var aws = require('aws-sdk');
var multerS3 = require('multer-s3');
var multer = require("multer");
(Not real codes)
aws.config.update({
secretAccessKey: 'QWUdawup',
accessKeyId: 'GHQWD1A',
region: 'us-east-2'
});
var s3 = new aws.S3();
var upload = multer({
storage: multerS3({
s3: s3,
bucket: 'medstayfiles',
key: function (req, file, cb) {
console.log(file);
cb(null, file.originalname); //use Date.now() for unique file keys
}
})
});
router.post("/", middleware.isLoggedIn, upload.array('image', 1), function(req, res,next){
var filepath = undefined;
if(req.files[0]) {
filepath = req.files[0].key; // 'uploads/xxxxx.extension'
}
var newRentals = {filepath: filepath}
Rentals.create(newRentals, function(err, newlyCreated){
if(err){
console.log(err);
} else {
//redirect back to rentals page
res.redirect("/rentals");
}
});
});
您没有提到错误出现的位置,但根据您的代码,req.files
似乎未定义。您可能需要添加适当的中间件来处理文件上传。
实际上,如果您接受来自网络用户的帖子,您应该让他们使用预先签名的 URL 或上传表单直接上传到 S3。省去麻烦和带宽。
我一直在按照本指南 Simple file upload to S3 using aws-sdk and Node/Express 尝试让用户通过 S3 上传图像。出于某种原因,我无法让它工作。我将如何修复我的代码以更正错误?
我得到的错误是:类型错误:无法读取未定义的 属性“0”。
var aws = require('aws-sdk');
var multerS3 = require('multer-s3');
var multer = require("multer");
(Not real codes)
aws.config.update({
secretAccessKey: 'QWUdawup',
accessKeyId: 'GHQWD1A',
region: 'us-east-2'
});
var s3 = new aws.S3();
var upload = multer({
storage: multerS3({
s3: s3,
bucket: 'medstayfiles',
key: function (req, file, cb) {
console.log(file);
cb(null, file.originalname); //use Date.now() for unique file keys
}
})
});
router.post("/", middleware.isLoggedIn, upload.array('image', 1), function(req, res,next){
var filepath = undefined;
if(req.files[0]) {
filepath = req.files[0].key; // 'uploads/xxxxx.extension'
}
var newRentals = {filepath: filepath}
Rentals.create(newRentals, function(err, newlyCreated){
if(err){
console.log(err);
} else {
//redirect back to rentals page
res.redirect("/rentals");
}
});
});
您没有提到错误出现的位置,但根据您的代码,req.files
似乎未定义。您可能需要添加适当的中间件来处理文件上传。
实际上,如果您接受来自网络用户的帖子,您应该让他们使用预先签名的 URL 或上传表单直接上传到 S3。省去麻烦和带宽。