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学习与实战》系列

  • Egg.js学习与实战系列 · 修改应用启动端口号
  • Egg.js学习与实战系列 · 文件上传配置(本文)
  • Egg.js学习与实战系列 · Post请求csrf token问题
  • Egg.js学习与实战系列 · jsonp接口的封装使用

欢迎访问:个人博客地址

你可能感兴趣的:(Egg.js学习与实战系列 · 文件上传配置)