gpt4 book ai didi

node.js - 如何使用nodejs将图像上传到s3存储桶?

转载 作者:太空宇宙 更新时间:2023-11-03 21:51:33 25 4
gpt4 key购买 nike

我是 AWS 新手。我想使用 multer 将图像从 Node js 上传到 s3 存储桶。

我已按照 YouTube 上的教程进行操作,但遇到了此错误。

https://www.youtube.com/watch?v=ASuU4km3VHE&t=1047s

TypeError:无法读取未定义的属性“位置””错误。(POSTMAN)

请帮我解决问题。谢谢您的帮助

file_upload.js

const express = require("express");
const app = express();
const upload = require("./file_upload");

const singleUpload = upload.single("image");

app.post("/image-upload", function(req, res) {
singleUpload(req, res, function(err, some) {
if (err) {
return res.status(422).send({
errors: [{ title: "Image Upload Error", detail: err.message }]
});
}
return res.json({ imageUrl: req.file.location });
});
});


app.listen(3000, () => {
console.log("Listening on Port 3000");
});

file_upload_router.js

const multer = require("multer");
const multerS3 = require("multer-s3");
const aws = require("aws-sdk");

aws.config.update({
secretAccessKey: "Your_ACCESS_KEY",
accessKeyId: "YOUR_ACCESS_KEY_ID",
region: "" // region of your bucket
});

const s3 = new aws.S3();

const upload = multer({
storage: multerS3({
s3: s3,
bucket: "upload-image-node-test",
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;

我还进行了以下更改:-

阻止新的公共(public) ACL 并上传公共(public)对象(推荐)”为 False。

“删除通过公共(public) ACL 授予的公共(public)访问权限(推荐)”也设为 False。

我需要获取一个 JSON 响应,其中 imageUrl 作为键,时间戳作为文件名,但我收到以下错误:

类型错误:无法读取未定义的属性“位置””

最佳答案

您正在访问请求对象上不存在的filelocation 属性。 Node/Express 不会自动处理这个问题。

如果您想访问 req 对象上的file(无需编写自定义处理程序),那么您需要安装body-parser 模块并将其用作中间件

const bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: false }));

这假设您的 Web 表单包含名为 file 的字段。

关于node.js - 如何使用nodejs将图像上传到s3存储桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54251651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com