Я новичок в AWS. Я хочу загрузить изображение из узла js, используя multer, в корзину s3.
Я следовал учебнику на YouTube, но застрял с этой ошибкой.
https://www.youtube.com/watch?v=ASuU4km3VHE&t=1047s
TypeError: Невозможно прочитать свойство 'location' с неопределенной "ошибкой. (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;
Я также внес следующие изменения: -
Блокировать новые публичные ACL и загружать публичные объекты (рекомендуется) "в False.
"Удалить публичный доступ, предоставленный через публичные списки ACL (рекомендуется)", также False.
Мне нужно получить ответ JSON с imageUrl в качестве ключа и меткой времени в качестве имени файла, но я получаю следующую ошибку:
TypeError: Невозможно прочитать свойство 'location' undefined "