在使用Egg.js搭建文件上传服务时,遇到了几个一般新手都会遇到的坑。
经查阅官方文档,Egg框架中默认使用egg-multipart插件进行文件上传,所以上传文件前需要做相关的配置。

上传文件提示: filetype undefined (图片可以上传,不报错)
- 原因:没有给egg指定上传文件的类型
解决方法: 在config中添加如下配置
// config/config.default.js
config.multipart = {mode: 'file', // 对应文件类型
}
上传 txt 文件提示:Invalid filename
-
原因:
egg-multipart有对上传文件的后缀名限制的白名单(whitelist),.txt后缀没有在默认whitelist中,导致上传失败。 -
默认白名单:
const whitelist = [// images'.jpg', '.jpeg', // image/jpeg'.png', // image/png, image/x-png'.gif', // image/gif'.bmp', // image/bmp'.wbmp', // image/vnd.wap.wbmp'.webp','.tif','.psd',// text'.svg','.js', '.jsx','.json','.css', '.less','.html', '.htm','.xml',// tar'.zip','.gz', '.tgz', '.gzip',// video'.mp3','.mp4','.avi',
];
解决方法: 在config中添加如下配置
// config/config.default.js
config.multipart = {fileExtensions: ['.txt',],
}
上传大文件提示:Reach fileSize limit
解决方法: 在config中添加如下配置
// config/config.default.js
config.multipart = {fileSize: '100mb', // Max file size (in bytes), default is 10mb
}
参考文档:
- https://eggjs.org/zh-cn/plugins/multipart.html
欢迎访问:个人博客地址