Tiven

Tiven

博观而约取,厚积而薄发

天问的个人网站(天问博客),专注于Node.js、Vue.js、React、Vite、Npm、Nginx等大前端技术。不断学习新技术,记录日常开发问题,持续分享coding,极客开源,共同进步。生命不息,奋斗不止... [ hexo blog ]

Egg.js学习与实战系列 · 文件上传配置


在使用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
}

参考文档:

  • https://eggjs.org/zh-cn/plugins/multipart.html

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


欢迎访问:个人博客地址