node.js - 邮递员正在上传到 S3,但我的节点应用程序不是
问题描述
我正在尝试设置直接进入 S3 的文件上传。当我与邮递员一起发布时它可以工作,但它在本地主机中对我不起作用。
// 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: file.fieldname });
},
key: function (req, file, cb) {
console.log(file);
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" });
}
// return res.json({'imageUrl': req.file.location})
res.send('uploaded!')
});
});
// upload.ejs
<form method="POST">
<input type="file" name="image"/>
<button type="submit">upload</button>
</form>
当我使用邮递员发帖时,每次都成功,我可以看到存储桶中的图像。我已经调查了本地主机中的网络和标题选项卡以及邮递员中的标题。
我的本地主机:
Request URL: http://localhost:3000/upload
Request Method: POST
Status Code: 200 OK
Remote Address: [::1]:3000
Referrer Policy: strict-origin-when-cross-origin
Connection: keep-alive
Content-Length: 9
Content-Type: text/html; charset=utf-8
Date: Wed, 09 Dec 2020 23:38:26 GMT
ETag: W/"9-7HXq8Taw8mvUeWWmTalr7FHWFHk"
Vary: Accept-Encoding
X-DNS-Prefetch-Control: off
X-Powered-By: Express
FORM DATA:
image: curiousCat.jpg
我对发生的事情感到非常困惑,我真的很感激任何形式的帮助
解决方案
推荐阅读
- reactjs - 执行 form.submit() 时响应表单解决方法以触发提交事件
- mysql - 使用 Express.js 和 mysql 处理 PATCH 请求
- c++ - 除了方便之外,在 CUDA 中使用 2d 内核是否有优势?
- reactjs - 如何在redux reducer中过滤地图内部
- c++ - SDL - 即使使用任务管理器也无法关闭程序
- r - R:试图分析2种性别在同一个月内的消费模式
- cursor - 拖出和拖回窗口时,我无法控制光标的变化方式
- linux - #pragma GCC 诊断忽略“-Wmissing-attributes”不起作用
- sql - SQL - 使用 HASHBYTES 加密密码,但它更改为中文单词
- c++ - 如何在 C++ 运行时停止程序 3 秒