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

EggJS

上传文件提示: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 }

参考文档:


《Egg.js学习与实战》系列


欢迎访问:个人博客地址