![](/img/trans.png)
[英]node.js express multer issue uploading images to s3 using multer-s3 npm
[英]Uploading images to s3 using node.js
這是我第一次使用 multer 或 s3,我跟着一個博客,我似乎遇到了一些問題。 在我的 routes.js 中,當我return res.json({'imageUrl': req.file.location})
時出現此錯誤: Cannot read property 'location' of undefined
當我使用 console.log() req.file
它返回不明確的。
我相信我的存儲桶和所有配置都正確,我只是對代碼中發生的事情有點困惑。 如果有人能指出我做錯了什么或有任何建議,我將不勝感激
謝謝!
更新:我可以通過postman成功上傳圖片,但不是我項目中的表格。 我很確定我的問題來自return res.json({'imageUrl': req.file.location})
// uploadController.js
const aws = require("aws-sdk");
const multer = require("multer");
const multerS3 = require("multer-s3");
require("dotenv").config();
aws.config.update({
secretAccessKey: process.env.SECRETACCESSKEY,
accessKeyId: process.env.ACCESSKEYID,
region: "us-west-2",
});
const s3 = new aws.S3();
const fileFilter = (req, file, cb) => {
if (file.mimetype === "image/jpeg" || file.mimetype === "image/png") {
cb(null, true);
} else {
cb(new Error("Invalid mime type, only JPEG and PNG"), false);
}
};
const upload = multer({
fileFilter: fileFilter,
storage: multerS3({
s3: s3,
bucket: "mylocal",
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;
// routes.js
let upload = require('../controllers/uploadController')
router.get("/upload", function (req, res) {
res.render("upload");
});
const singleUpload = upload.single("image");
router.post("/upload", function (req, res) {
singleUpload(req, res, function (err) {
if (err) {
return res.status(422).send({ errors: "wrong" });
}
console.log(req.file); // returns undefined
return res.json({'imageUrl': req.file.location})
});
});
// upload.ejs
<form method="POST" enctype="multipart/form-data">
<input type="file" />
<button type="submit">upload</button>
</form>
嘗試 req.files(請在末尾注明 s)而不是 req.file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.