如何访问API中的文件?
我阅读了其他解决方案,它们都需要npm包来解决这个问题。我想知道为什么我不能用普通的方法来解决这个问题。而且,答案很旧,建议使用body-parser,现在它与Express捆绑在一起。
我希望解决方案是香草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
为空?请帮助我了解我做错了什么。
2条答案
按热度按时间zbdgwd5y1#
首先,需要使用multer包来处理
multipart/form-data
的express。必须将其作为中间件来设置文件的字段名。作为参数传递给single()
函数的名称必须与客户端的附加名称匹配。mwkjh3gx2#
这是整个文件管理API。
我正在使用
busboy
,这是multer
在引擎盖下使用的。我发现它更容易使用。