【发布时间】:2021-04-15 17:24:18
【问题描述】:
如何访问 API 中的文件?
我阅读了其他解决方案,它们都需要 npm 包来解决这个问题。我想明白为什么我不能做香草。此外,答案很旧,建议使用现在与 Express 捆绑在一起的 body-parser。
我希望解决方案是 vanilla JS,以便更好地理解流程。
客户
async function uploadFile(file) {
let formData = new FormData();
formData.append("file", file);
let res = await fetchPostFile("/api/files", formData);
}
获取
export async function fetchPostFile(url, formData) {
try {
let result = await (
await fetch(url, {
method: "POST",
withCredentials: true,
credentials: "include",
headers: {
Authorization: localStorage.getItem("token"),
Accept: "application/json",
"Content-type": "multipart/form-data",
},
body: formData,
})
).json();
return result;
} catch (err) {
return err;
}
}
api
router.post("/api/files", async function (req, res, next) {
try {
console.log(req.file); // undefined
console.log(req.files); // undefined
console.log(req.body); // {}
} catch (err) {
next(err);
} finally {
req.connection.release();
}
});
为什么req.body 是空的?请帮助我理解我做错了什么。
【问题讨论】:
-
这能回答你的问题吗? Express js form data
-
不,因为在 Express 中内置了正文解析器,而在我的情况下,
req.body是空的。我在研究完所有内容后问了这个问题。 -
body-parser不是内置的。但是,由于您使用的是multipart/form-data,因此您需要改用multer。这两点都在我链接的答案中提出。
标签: node.js express upload fetch