AdonisJS4.1表单上传图片时报错profilePic.move is not a function
AdonisJS 4.1 文件上传时
move is not a function 报错解决 常见触发原因&修复方案
- 取值逻辑错误,未获取到框架封装的File实例
框架自带的move、moved文件处理方法,仅存在于通过request.file()生成的File类实例上。如果直接从request.all()的全局请求参数中读取profilePic,拿到的只是普通参数值对象,不存在对应的文件处理方法,就会触发方法不存在的报错。正确取值逻辑参考:// 控制器内正确的文件取值写法 const profilePic = request.file('profilePic', { // 可同步配置文件校验规则 size: '2mb', extnames: ['jpg', 'jpeg', 'png'] }) // 拿到合法File实例后,原有移动逻辑可正常运行 await profilePic.move(Helpers.tmpPath('uploads'), { name: 'custom.jpg', overwrite: true }) if (!profilePic.moved()) { console.log('file not moved') } - 前端表单编码配置缺失
提交文件的表单如果没有设置enctype="multipart/form-data",请求体不会携带可解析的二进制文件流,框架无法生成对应的File对象,此时获取到的profilePic只是空值或普通文本,不存在文件处理方法。 - 请求体解析配置未开启文件处理
检查config/bodyParser.js配置,确认upload.autoProcess为开启状态。如果该配置被手动关闭,框架不会自动解析上传文件流生成File实例,即使通过request.file()取值,也无法拿到带move方法的合法对象。
额外注意点
完成上述配置拿到合法File实例后,需确认目标存储目录(Helpers.tmpPath('uploads')对应路径)拥有读写权限,避免因权限不足导致文件移动操作失败。
内容的提问来源于stack exchange,提问作者Haripriya
相关产品推荐
相关产品推荐

