我在将我的图像从表单上传到我的 s3 存储桶时遇到了一些问题。目前部分图片已上传,例如 19kb 而不是完整的 272kb,如果我尝试从我的存储桶中打开图片,它会损坏
app.post('/admin/addClub', (req, res) => {
if (!req.user) {
res.redirect('/admin');
return;
}
// Upload image to S3
var s3Bucket = new AWS.S3( { params: {Bucket: process.env.AWS_BUCKET, Key: process.env.AWS_ACCESS_KEY_ID} } )
var data = { Key: req.body.imageBanner, // file from form
Body: req.body.imageBanner, // Not sure here
ACL: "public-read",
ContentType: helper.getContentTypeByFile(req.body.imageBanner)
};
s3Bucket.putObject(data, function(err, data){
if (err)
{ console.log('Error uploading data: ', data);
res.redirect('/admin/main');
} else {
console.log('succesfully uploaded the image!');
res.redirect('/admin/main');
}
});
任何人都可以建议我需要为 Body
键传递什么吗?因为我认为这一定是我的问题
谢谢
最佳答案
您需要集成 express-fileupload 包,使您可以在 Express 上接收文件上传。
安装运行:npm install --save express-fileupload
然后你需要通过 req.files.imageBanner.data
(假设您的文件上传字段看起来像 <input name="imageBanner" type="file" />
)作为 Body
范围。它应该是这样的:
var fileUpload = require('express-fileupload');
app.use(fileUpload());
app.post('/admin/addClub', (req, res) => {
if (!req.user) {
res.redirect('/admin');
return;
}
// Upload image to S3
var s3Bucket = new AWS.S3( { params: {Bucket: process.env.AWS_BUCKET, Key: process.env.AWS_ACCESS_KEY_ID} } )
var data = { Key: req.body.imageBanner, // file from form
Body: req.files.imageBanner.data,
ACL: "public-read",
ContentType: helper.getContentTypeByFile(req.body.imageBanner)
};
s3Bucket.putObject(data, function(err, data){
if (err)
{ console.log('Error uploading data: ', data);
res.redirect('/admin/main');
} else {
console.log('succesfully uploaded the image!');
res.redirect('/admin/main');
}
});
});
您可以在此处找到 express-fileupload 包的文档:
关于javascript - 上传图片到s3 bucket node js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42249453/