在使用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
《Egg.js学习与实战》系列
- Egg.js学习与实战系列 · 修改应用启动端口号
- Egg.js学习与实战系列 · 文件上传配置(本文)
- Egg.js学习与实战系列 · Post请求csrf token问题
- Egg.js学习与实战系列 · jsonp接口的封装使用
欢迎访问:个人博客地址