上传文件或图片

上传中间件think_upload支持文件上传到服务器本地,上传到FTP服务器以及上传到阿里云OSS,后期还会扩展其他的云存储方案。

使用方法:

1、项目中增加中间件 middleware/upload.js

  1. module.exports = require('think_upload');

2、项目中间件配置 config/middleware.js:

  1. list: [...,'upload'], //加载的中间件列表
  2. config: { //中间件配置
  3. ...,
  4. upload: {
  5. upload_type: 'local', //上传方式 local, ftp, aliyun
  6. max_file_size: 100 * 1024 * 1024, //上传文件大小限制,默认100M
  7. file_allow_type: 'jpg|jpeg|png|bmp|gif|xls|doc|docx|zip|rar|ipa|apk', //允许上传的文件类型
  8. // upload_type='local'
  9. file_save_path: `${process.env.ROOT_PATH}/static/uploads/`, //上传文件保存目录
  10. file_save_url: '/uploads/', //上传文件目录访问URL
  11. // upload_type='ftp'
  12. ftp_server: '', //ftp服务器ip或域名
  13. ftp_port: '', //ftp服务器端口
  14. ftp_user: '', //ftp服务器用户
  15. ftp_pwd: '', //ftp服务器密码
  16. ftp_url: '', //ftp服务器保存目录
  17. // upload_type='aliyun'
  18. ali_access_key: '', //阿里云OSS access_key
  19. ali_access_secret: '', //阿里云OSS access_secret
  20. ali_bucket: '', //阿里云OSS bucket
  21. ali_path: '', //阿里云OSS 保存目录
  22. ali_url: '', //阿里云OSS url,可以是OSS默认域名,也可以是绑定的自定义域名
  23. }
  24. }

3、使用:

  1. // in controller
  2. let info = await this.ctx.uploadFile(); // [{filename: '..', fileurl: '..', filesize: 10}] or null
  3. // in middleware
  4. let info = await ctx.uploadFile(); // [{filename: '..', fileurl: '..', filesize: 10}] or null