使用express-fileupload上传文件失败提示请求不符合上传条件如何解决?
问题根源与修复方案
1. 前端表单属性配置错误
enctype="multipart/form-data" 是表单标签<form>的专属属性,你错误将该属性写在了<input>标签上,导致浏览器提交文件时没有按二进制编码格式传输,express-fileupload识别不到符合要求的上传请求,才会输出Request is not eligible for file upload的日志。同时原代码中提交按钮没有闭合,也需同步修复。
修复后的admin.hbs代码:
<form method="POST" action="/admin/fileUpload" enctype="multipart/form-data"> <h2>Upload File</h2> <input type="file" name="sampleFile"> <button type="submit">上传</button> </form>
2. 控制器代码语法错误
你写的sampleFile.mv()回调函数缺少闭合的),代码运行到此处会抛出语法错误。另外注意__dirname是当前控制器文件所在的目录,若你的upload文件夹存放在项目根目录,建议使用process.cwd()拼接路径,同时在res.render前加return避免后续代码继续执行。
修复后的taskController.js代码:
exports.fileUpload = (req, res) => { let sampleFile; let uploadPath; if (!req.files || Object.keys(req.files).length === 0) { return res.render('admin', { error: `No files were uploaded!` }); } sampleFile = req.files.sampleFile; // 路径对应项目根目录下的upload文件夹,可根据实际存储位置调整 uploadPath = process.cwd() + '/upload/' + sampleFile.name; sampleFile.mv(uploadPath, function (err) { if (err) throw err; res.render('admin', { alert: `File ${sampleFile.name} successfully uploaded!` }); }); // 补全此处缺失的闭合括号 }
内容的提问来源于stack exchange,提问作者Lukas Keller
相关产品推荐
相关产品推荐

