express - 如何正确上传来自CKEditor5的express-fileupload图像?
问题描述
我的api如下
router.post("/upload", async (req, res) => {
if (!req.files || Object.keys(req.files).length === 0) {
return res.status(400).send("No files were uploaded.");
}
console.log(req.files)
let file = req.files.upload;
let uploadPath = __dirname + "/../public/" + file.name;
file.mv(uploadPath, function (err) {
if (err) {
console.log(err)
return res.status(500).send(err)
}
res.sendStatus(200);
});
});
我的反应组件
<CKEditor
editor={ClassicEditor}
config={{
ckfinder: {
uploadUrl: "/api/upload",
},
}}
data={props.state.tech.assess_info}
onChange={(event, editor) => {
..
}}
/>
目前,当我从 CKeditor 上传图像时,图像已成功上传(写入服务器端的“public/{filename}”)。但是 CKEditor 错误弹出并说明“无法上传”。我相信 CKeditor 期待特定的响应代码,而不仅仅是 HTTP 状态 200。你们怎么看?
解决方案
Ckeditor 期待来自 API 的以下响应。
res.status(200).json({
uploaded: true,
url: `/uploads/${file.name}`,
});
如果有人需要,完整的 api 代码。
// Upload a file
router.post("/upload", async (req, res) => {
if (!req.files || Object.keys(req.files).length === 0) {
return res.status(400).send("No files were uploaded.");
}
let file = req.files.upload;
let uploadPath = __dirname + "/../public/uploads/" + file.name;
file.mv(uploadPath, function (err) {
if (err) return res.status(500).send(err);
res.status(200).json({
uploaded: true,
url: `/uploads/${file.name}`,
});
});
});
推荐阅读
- powershell - Powershell脚本匹配2个文件之间的字符串并合并
- c# - WPF功能区标题未显示
- javascript - 如何在 jQuery 中上下滑动多余的文本?
- python - 如何通过Odoo中的python方法将动作/向导绑定到特定模型中
- c++11 - 获取 rtpL16 数据到本地文件 | 如何检查文件是否符合预期?
- dart - Angular Dart 给出错误:getter 'injector$Injector' 没有为类 'self' 定义
- amazon-web-services - 将 RDS 复制到新数据库的最快方法
- angular - 如何测试角度形式的第一个表单控制重点是使用茉莉花的页面加载
- java - 无法使用 Java 从 S3 下载文件
- java - @Test(expected = Exception.class) 或 Assertions.assertThrows(...) 或 assertThatThrownBy(..) 推荐哪一个?