nestjs-alicloud-oss
Version:
Alicloud OSS(Object Storage Service) module for NestJS framework (node.js)
143 lines (113 loc) • 4.34 kB
Markdown
<p align="center">
<a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo_text.svg" width="320" alt="Nest Logo" /></a>
</p>
<p align="center">
<a href="https://www.npmjs.com/package/nestjs-alicloud-oss"><img src="https://img.shields.io/npm/v/nestjs-alicloud-oss.svg" alt="NPM Version" /></a>
<a href="https://www.npmjs.com/package/nestjs-alicloud-oss"><img src="https://img.shields.io/npm/l/nestjs-alicloud-oss.svg" alt="Package License" /></a>
</p>
[English](README.md) | 简体中文
## 描述
基于 [Nest](https://github.com/nestjs/nest)(node.js) 框架封装的 [阿里云对象存储 OSS](https://www.aliyun.com/product/oss) 模块。
## 安装前
1. 创建阿里云账号
2. 购买对象存储服务. ([产品链接](https://www.aliyun.com/product/oss))
3. 创建 Bucket, 到 **控制台 > 对象存储服务 > Bucket 列表 > 创建 Bucket**
## 安装
```bash
$ npm install --save nestjs-alicloud-oss
#or
$ yarn add nestjs-alicloud-oss
```
## 文档
1. 使用如下配置导入 `AlicloudOssModule`:
```typescript
import { Module } from '@nestjs/common';
import { AlicloudOssModule } from 'nestjs-alicloud-oss';
import { AppController } from './app.controller';
import { AppService } from './app.service';
export class AppModule {}
```
> 你可以设置一个默认的`bucket` 来应用于整个应用的所有控制器 controller, 你也可以在在控制器的路由中重写 它,以使用不同的`bucket`。
## 例子
### 使用默认的 bucket 和第一级文件路径 来存储文件
```typescript
import { Controller, Logger, Post, UploadedFile, UseInterceptors } from '@nestjs/common';
import { AlicloudOssFileInterceptor, UploadedFileMetadata } from 'nestjs-alicloud-oss';
export class AppController {
UploadedFileUsingInterceptor(
file: UploadedFileMetadata,
) {
console.log(file.objectUrl);
// http://nest-alicloud-oss-demo.oss-cn-beijing.aliyuncs.com/filename
}
}
```
### 使用自定义的 bucket 和文件路径 来存储文件
```typescript
import { Controller, Logger, Post, UploadedFile, UseInterceptors } from '@nestjs/common';
import { AlicloudOssFileInterceptor, UploadedFileMetadata } from 'nestjs-alicloud-oss';
export class AppController {
UploadedFilesUsingInterceptor(
file: UploadedFileMetadata,
) {
console.log(file.objectUrl);
// http://nest-alicloud-oss-demo2.oss-cn-beijing.aliyuncs.com/x/y/z/filename
}
}
```
### 使用自定义的 文件名和 bucket 来存储文件
```typescript
import { Controller, Logger, Post, UploadedFile, UseInterceptors } from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { AlicloudOssService, UploadedFileMetadata } from 'nestjs-alicloud-oss';
export class AppController {
constructor(private readonly ossService: AlicloudOssService) {}
async UploadedFilesUsingService(
file: UploadedFileMetadata,
) {
file = {
...file,
customName: 'customFilename.txt',
folder: 'a/b/c',
bucket: 'nest-alicloud-oss-demo3'
};
const url = await this.ossService.upload(file);
console.log(url)
// http://nest-alicloud-oss-demo3.oss-cn-beijing.aliyuncs.com/a/b/c/customFilename.txt
console.log(file.objectUrl);
// http://nest-alicloud-oss-demo3.oss-cn-beijing.aliyuncs.com/a/b/c/customFilename.txt
}
}
```
### License
The [MIT](LICENSE) License.