README
nest-oss OSS 封装
注意:仍在开发中,目前仅在内部使用
Nest框架 云 OSS (暂有 ali) 上传插件
使用说明
外部人员仅供参考,请不要用于生产环境,因此导致的事故后果请自行承担。
安装
$ npm i @shubuzuo/nestjs-oss
or
$ yarn add @shubuzuo/nestjs-oss
用法
config.js 配置
export const config = {
client: {
endpoint: 'oss-cn-shenzhen.aliyuncs.com', // endpoint域名
accessKeyId: 'xxxxxxxxxxxx', // 账号
accessKeySecret: 'xxxxxxx', // 密码
bucket: 'xxxxxx', // 存储桶
internal: false, // 是否使用阿里云内部网访问
secure: true, // 使用 HTTPS
cname: false, // 自定义endpoint
timeout: '90s'
},
domain: '', // 自定义域名
};
module.ts
import { AppController } from './test.controller';
import { IninderOssModule } from '@shubuzuo/nestjs-oss';
const config = {}
@Module({
imports: [
IninderOssModule.forRoot(config)
],
controllers: [AppController],
})
export class AppModule{}
controller.ts
import { Controller, Req, Post, Get, UseInterceptors, UploadedFiles } from '@nestjs/common';
import { FilesInterceptor } from '@nestjs/platform-express';
import { AliOssService } from '@shubuzuo/nestjs-oss';
/**
* AppController
* @export
* @class AppControllerr
*/
@Controller()
export class AppController {
constructor(private readonly aliOssService: AliOssService) {}
/**
* 多文件上传oss
*/
@Post('uploadOSS')
@UseInterceptors(FilesInterceptor('files'))
public async uploadOSS(@UploadedFiles() file) {
const result = await this.aliOssService.upload(file);
return result;
// result [
// {
// uploaded: true,
// path: 'images/20191115/16420962.png',
// src: 'http://xxxx.oss-cn-shenzhen.aliyuncs.com/images/20191115/16420962.png',
// srcSign: 'https://xxx.oss-cn-shenzhen.aliyuncs.com/images/20191115/16420962.png?OSSAccessKeyId=LTAI6lgwcBcCbiKX&Expires=1573814530&Signature=brYN7qbDdyxGARc%2BdoRsnblJx2w%3D',
// message: '上传成功'
// }
// ]
}
/**
* 对oss文件签名
*/
@Get('getUrl')
public async uploadOSS(@Req() request) {
const url = req.query.url; // 原始oss url
const width = req.query.width; // 设置返回图片宽度
const height = req.query.height; // 设置返回图片高度
const result = await this.aliOssService.getOssSign(file, width, height);
return result;
}
/**
* 前端获取签名
*/
@Get('uploadSgin')
public getUploadSgin() {
const result = this.aliOssService.getUploadSgin();
return result;
// result {
// policy: 'xxxxxxxxxxxxxx';
// OSSAccessKeyId: 'xxxxxxxxxxxxxx'
// signature: 'xxxxxxxxxxxxxx'
// }
}
/**
* 批量删除图片
*/
@Get('delete')
public async deleteOSS(@Req() request) {
const uploadUrl = ['images/20191115/16420962.png'];
const result = await this.aliOssService.deleteMulti([uploadUrl]);
return result;
// result {
// res: {
// status: 200,
// statusCode: 200,
// statusMessage: 'OK',
// // ....
// },
// deleted: [ 'images/20191115/16420962.png' ]
// }
}
}