Nodejs Nestjs Minio客户端@nestjs/minio的使用

Nodejs Nestjs Minio客户端@nestjs/minio的使用
在NestJS中使用MinIO客户端,你可以通过[@nestjs](/user/nestjs)/minio这个包来实现。下面是一个简单的步骤指南和示例代码,帮助你开始使用。

1. 安装依赖

首先,你需要安装[@nestjs](/user/nestjs)/miniominio库:

npm install [@nestjs](/user/nestjs)/minio minio

2. 配置MinIO客户端

在你的NestJS项目中创建一个服务或模块,并配置MinIO客户端。这里我们以服务为例:

import { Injectable } from '[@nestjs](/user/nestjs)/common';
import * as Minio from 'minio';

@Injectable()
export class MinioService {
  private client: Minio.Client;

  constructor() {
    // 初始化MinIO客户端
    this.client = new Minio.Client({
      endPoint: 'your-minio-endpoint', // 例如:'localhost'
      port: 9000, // MinIO服务器端口
      useSSL: false, // 是否使用SSL
      accessKey: 'your-access-key',
      secretKey: 'your-secret-key',
    });
  }

  // 示例方法:上传文件
  async uploadFile(bucketName: string, objectName: string, filePath: string) {
    return this.client.fPutObject(bucketName, objectName, filePath);
  }

  // 示例方法:下载文件
  async downloadFile(bucketName: string, objectName: string, filePath: string) {
    return this.client.fGetObject(bucketName, objectName, filePath);
  }
}

3. 使用MinIO服务

在你的控制器或其他服务中注入并使用MinioService

import { Controller, Get, Post, Body } from '[@nestjs](/user/nestjs)/common';
import { MinioService } from './minio.service';

@Controller('files')
export class FilesController {
  constructor(private readonly minioService: MinioService) {}

  @Post('upload')
  async upload(@Body('bucket') bucket: string, @Body('object') object: string, @Body('filePath') filePath: string) {
    await this.minioService.uploadFile(bucket, object, filePath);
    return { message: 'File uploaded successfully!' };
  }

  @Get('download')
  async download(@Query('bucket') bucket: string, @Query('object') object: string, @Query('filePath') filePath: string) {
    await this.minioService.downloadFile(bucket, object, filePath);
    return { message: 'File downloaded successfully!' };
  }
}

4. 运行应用

确保你的MinIO服务器正在运行,并且配置正确。然后启动你的NestJS应用:

npm run start

现在你可以通过POST请求上传文件,或者通过GET请求下载文件了。

以上就是一个基本的NestJS与MinIO集成的例子。你可以根据实际需求扩展更多的功能,比如列出桶中的对象、删除对象等。


3 回复

当然,没问题!想象一下,你正在用魔法(代码)召唤一只小怪兽(Minio客户端)来帮你搬运数据。首先,你需要在你的NestJS世界里召唤这只小怪兽。你可以这样召唤:

  1. 通过魔法书(npm/yarn)安装[@nestjs](/user/nestjs)/minio

    npm install [@nestjs](/user/nestjs)/minio
    # 或者
    yarn add [@nestjs](/user/nestjs)/minio
    
  2. 在你的模块中召唤小怪兽(注册Minio模块):

    import { Module } from '[@nestjs](/user/nestjs)/common';
    import { MinioModule } from '[@nestjs](/user/nestjs)/minio';
    
    [@Module](/user/Module)({
      imports: [
        MinioModule.register({
          endPoint: 'play.min.io',
          port: 9000,
          useSSL: true,
          accessKey: 'YOUR-ACCESSKEY',
          secretKey: 'YOUR-SECRETKEY',
        }),
      ],
    })
    export class AppModule {}
    
  3. 现在你可以使用这只小怪兽了!在你的控制器或服务中注入它:

    import { Injectable } from '[@nestjs](/user/nestjs)/common';
    import { MinioService } from '[@nestjs](/user/nestjs)/minio';
    
    [@Injectable](/user/Injectable)()
    export class YourService {
      constructor(private readonly minioService: MinioService) {}
    
      async doSomething() {
        // 使用minioService进行文件操作...
      }
    }
    

就这样,你已经成功召唤并使用了Minio小怪兽来帮助你处理文件存储任务!


在NestJS中使用MinIO客户端@nestjs/minio可以方便地进行对象存储操作。下面是一个简单的示例,展示如何安装、配置和使用这个库。

1. 安装

首先,你需要安装@nestjs/miniominio库:

npm install @nestjs/minio minio

2. 配置

接下来,在你的应用中配置MinIO模块。假设你已经在app.module.ts中创建了你的应用模块:

import { Module } from '@nestjs/common';
import { MinioModule } from '@nestjs/minio';

@Module({
  imports: [
    MinioModule.forRoot({
      endPoint: 'your-minio-endpoint', // 例如:'localhost'
      port: 9000, // 端口
      useSSL: false, // 是否使用SSL
      accessKey: 'your-access-key',
      secretKey: 'your-secret-key',
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

3. 使用

然后,你可以在服务或控制器中注入MinioClient来执行对象存储操作。例如,创建一个服务storage.service.ts

import { Injectable } from '@nestjs/common';
import { MinioClient } from '@nestjs/minio';

@Injectable()
export class StorageService {
  constructor(private readonly minioClient: MinioClient) {}

  async uploadFile(bucketName: string, fileStream: any, fileName: string) {
    return this.minioClient.putObject(bucketName, fileName, fileStream);
  }

  async getFile(bucketName: string, fileName: string) {
    return this.minioClient.getObject(bucketName, fileName);
  }
}

4. 调用

最后,在你的控制器中调用这些方法。例如:

import { Controller, Get, Post, Body } from '@nestjs/common';
import { StorageService } from './storage.service';

@Controller('storage')
export class StorageController {
  constructor(private readonly storageService: StorageService) {}

  @Post('upload')
  async upload(@Body() body: { bucketName: string; fileStream: any; fileName: string }) {
    await this.storageService.uploadFile(body.bucketName, body.fileStream, body.fileName);
    return { message: '文件上传成功' };
  }

  @Get('download')
  async download(@Body() body: { bucketName: string; fileName: string }) {
    const file = await this.storageService.getFile(body.bucketName, body.fileName);
    return file;
  }
}

以上就是如何在NestJS项目中使用@nestjs/minio的基本步骤。你可以根据实际需求调整配置和逻辑。

@nestjs/minio 是用于 NestJS 应用程序的 MinIO 客户端库。首先,你需要安装它:

npm install @nestjs/minio minio

然后,在你的模块中导入 MinioModule 并配置 MinIO 客户端:

import { Module } from '@nestjs/common';
import { MinioModule } from '@nestjs/minio';

@Module({
  imports: [
    MinioModule.forRoot({
      endPoint: 'play.min.io',
      port: 9000,
      useSSL: true,
      accessKey: 'YOUR-ACCESS-KEY',
      secretKey: 'YOUR-SECRET-KEY',
    }),
  ],
})
export class AppModule {}

现在,你可以在服务中注入 MinioService 来执行文件上传、下载等操作。

回到顶部