官网:https://www.npmjs.com/package/egg-oss
安装
npm i egg-oss --save
配置
在 config/plugin.js 中写入配置
exports.oss = { enable: true, package: 'egg-oss', }; // config/config.default.js config.multipart = { mode: 'file' }; // oss存储 config.oss = { // 这里需要的东西去自己的服务器里看,我用的阿里云 client: { accessKeyId: 'your access key', accessKeySecret: 'your access secret', bucket: 'your bucket name', endpoint: 'oss-cn-hongkong.aliyun.com', timeout: '60s', }, }
使用
在 app/controller/common.js 中 编写upload路由的方法
'use strict'; const Controller = require('egg').Controller; const fs = require('mz/fs'); const path = require('path') class CommonController extends Controller { // 上传 async upload() { const ctx = this.ctx; if (!ctx.request.files) { return ctx.apiFail('请先选择上传文件'); } const file = ctx.request.files[0]; // const name = 'egg-oss-demo/' + path.basename(file.filename); const name = 'egg-oss-demo/' + ctx.genID(10) + path.extname(file.filename); let result; try { result = await ctx.oss.put(name, file.filepath); } catch (err) { console.log(err); } finally { await fs.unlink(file.filepath); } if (result) { return ctx.apiSuccess(result.url); } ctx.apiFail('上传失败'); } } module.exports = CommonController;
在 app/extend/context.js 填写生成唯一ID的扩展
// 生成唯一id genID(length) { return Number(Math.random().toString().substr(3, length) + Date.now()).toString(36); }