我尝试通过Multer实现文件上传。然而,我在试图捕获错误并发送到前端时得到了一个错误。我已经试过浏览文档和在Stackoverflow上已经提出的各种问题,但我对英语的理解似乎很低。Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
是我的错误。我找不到头发送的位置,或者进程结束的位置。希望有更好的理解帮助我。这是我的代码。它发生在db.query()
之后
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "./routes/files");
},
filename: (req, file, cb) => {
cb(null, Date.now() + "-" + file.originalname);
},
});
const upload = multer({ storage }).fields([
{ name: "file", maxCount: 1 },
{ name: "school_id", maxCount: 1 },
]);
router.post("/upload/students", (req, res) => {
try {
upload(req, res, (err) => {
if (err) {
console.log(err);
res.json({ msg: err.message });
} else {
const filePath = req.files["file"][0].path; //req.file.path;
const workbook = xlsx.readFile(filePath);
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
const rows = xlsx.utils.sheet_to_json(worksheet);
const school_id = req.body.school_id;
console.log("SchoolId ", school_id);
rows.forEach((row) => {
const student_id = row.student_id;
const klass_id = row.klass;
const stream_id = row.stream;
const name = row.name;
const year = row.year;
db.query(
"INSERT INTO student(graduated, prefect, school_id,\
name, student_id, klass_id, stream_id, year)\
VALUES($1, $2, $3, $4, $5, $6, $7, $8 )",
[0, 0, school_id, name, student_id, klass_id, stream_id, year],
(err) => {
if (err) {
console.log(err);
// res.json({ msg: err.message });
} else {
console.log("Successfull");
// res.json({ success: "Students Uploaded Successfully" });
}
}
);
});
}
});
} catch (err) {
res.json({ msg: err.message });
}
});
module.exports = router;
2条答案
按热度按时间s71maibg1#
你应该把你的async代码 Package 在一个promise里面,然后在promise之后你就可以resort了。发送您的成功。
toe950272#
发布了一个已被删除的答案。加上退货就解决了