上传文件或图片
上传中间件think_upload
支持文件上传到服务器本地,上传到FTP服务器以及上传到阿里云OSS,后期还会扩展其他的云存储方案。
使用方法:
1、项目中增加中间件 middleware/upload.js
module.exports = require('think_upload');
2、项目中间件配置 config/middleware.js:
list: [...,'upload'], //加载的中间件列表
config: { //中间件配置
...,
upload: {
upload_type: 'local', //上传方式 local, ftp, aliyun
max_file_size: 100 * 1024 * 1024, //上传文件大小限制,默认100M
file_allow_type: 'jpg|jpeg|png|bmp|gif|xls|doc|docx|zip|rar|ipa|apk', //允许上传的文件类型
// upload_type='local'
file_save_path: `${process.env.ROOT_PATH}/static/uploads/`, //上传文件保存目录
file_save_url: '/uploads/', //上传文件目录访问URL
// upload_type='ftp'
ftp_server: '', //ftp服务器ip或域名
ftp_port: '', //ftp服务器端口
ftp_user: '', //ftp服务器用户
ftp_pwd: '', //ftp服务器密码
ftp_url: '', //ftp服务器保存目录
// upload_type='aliyun'
ali_access_key: '', //阿里云OSS access_key
ali_access_secret: '', //阿里云OSS access_secret
ali_bucket: '', //阿里云OSS bucket
ali_path: '', //阿里云OSS 保存目录
ali_url: '', //阿里云OSS url,可以是OSS默认域名,也可以是绑定的自定义域名
}
}
3、使用:
// in controller
let info = await this.ctx.uploadFile(); // [{filename: '..', fileurl: '..', filesize: 10}] or null
// in middleware
let info = await ctx.uploadFile(); // [{filename: '..', fileurl: '..', filesize: 10}] or null