在使用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
}
參考文檔:
歡迎訪問:個人博客地址