Nodejs Nestjs Google Cloud Storage插件nestjs-gcloud-storage的使用

Nodejs Nestjs Google Cloud Storage插件nestjs-gcloud-storage的使用
nestjs-gcloud-storage 是一个用于 NestJS 应用程序的 Google Cloud Storage 客户端库。以下是如何安装和配置这个插件,并进行基本操作(如上传文件)的步骤。

1. 安装 nestjs-gcloud-storage

首先,你需要在你的 NestJS 项目中安装 nestjs-gcloud-storage 包。你也可以同时安装 @google-cloud/storage 作为依赖项:

npm install nestjs-gcloud-storage @google-cloud/storage

2. 配置 Google Cloud Storage

为了使用 nestjs-gcloud-storage,你需要设置 Google Cloud 的认证信息。你可以通过环境变量或直接在代码中提供服务账户的 JSON 文件路径。

环境变量方式

在你的 .env 文件中添加如下内容:

GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-file.json

确保将 /path/to/your/service-account-file.json 替换为实际的服务账户 JSON 文件路径。

直接在代码中配置

如果你选择直接在代码中配置,可以这样做:

import { Module } from '@nestjs/common';
import { GCloudStorageModule } from 'nestjs-gcloud-storage';

@Module({
  imports: [
    GCloudStorageModule.forRoot({
      projectId: 'your-project-id',
      keyFilename: '/path/to/your/service-account-file.json',
    }),
  ],
})
export class AppModule {}

3. 使用 nestjs-gcloud-storage 上传文件

接下来,你可以创建一个服务来处理文件上传:

import { Injectable, StreamableFile } from '@nestjs/common';
import { GCloudStorageService } from 'nestjs-gcloud-storage';

@Injectable()
export class FileUploadService {
  constructor(private readonly gCloudStorageService: GCloudStorageService) {}

  async uploadFile(fileBuffer: Buffer, fileName: string): Promise<string> {
    const bucketName = 'your-bucket-name'; // 替换为你的存储桶名称
    const file = await this.gCloudStorageService.bucket(bucketName).file(fileName);
    const stream = file.createWriteStream();
    stream.end(fileBuffer);
    return file.name;
  }
}

4. 控制器示例

最后,创建一个控制器来处理文件上传请求:

import { Controller, Post, UploadedFile, UseInterceptors } from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { FileUploadService } from './file-upload.service';

@Controller('files')
export class FileController {
  constructor(private readonly fileUploadService: FileUploadService) {}

  @Post('upload')
  @UseInterceptors(FileInterceptor('file'))
  async upload(@UploadedFile() file) {
    const uploadedFileName = await this.fileUploadService.uploadFile(
      file.buffer,
      file.originalname,
    );
    return { message: 'File uploaded successfully', fileName: uploadedFileName };
  }
}

以上就是如何在 NestJS 应用中使用 nestjs-gcloud-storage 插件的基本流程。记得替换上面代码中的占位符(如项目ID、存储桶名称等)为你自己的实际值。


3 回复

当然,让我用一种轻松的方式给你介绍nestjs-gcloud-storage插件的使用方法吧!

首先,你需要安装这个插件,你可以通过npm来安装:

npm install --save @ nestjs-gcloud-storage

然后,在你的模块文件中导入GCloudStorageModule。这里有个小技巧,想象你正在给Google云端存储设置一个“魔法通道”:

import { GCloudStorageModule } from '@nestjs-gcloud-storage';

@Module({
  imports: [
    GCloudStorageModule.register({
      projectId: 'your-project-id',
      keyFilename: './path/to/your/keyfile.json',
    }),
  ],
})
export class AppModule {}

现在,你可以创建一个服务来上传文件,就像施展魔法一样简单:

import { Injectable } from '@nestjs/common';
import { GCloudStorageService } from '@nestjs-gcloud-storage';

@Injectable()
export class FileUploadService {
  constructor(private readonly gcsService: GCloudStorageService) {}

  async uploadFile(buffer: Buffer, fileName: string) {
    const file = await this.gcsService.upload(
      'your-bucket-name',
      buffer,
      fileName,
    );
    return file;
  }
}

最后,记得在控制器中调用这个服务的方法,就像召唤出你上传的文件一样!

希望这能帮你快速上手!如果还有疑问,欢迎继续提问!


nestjs-gcloud-storage 是一个用于 NestJS 应用程序的 Google Cloud Storage 客户端库。以下是如何使用它的步骤:

  1. 安装依赖: 首先,你需要安装 [[@nestjs](/user/nestjs)-gcloud-storage](/user/nestjs-gcloud-storage)[@google-cloud](/user/google-cloud)/storage 依赖包。

    npm install [[@nestjs](/user/nestjs)-gcloud-storage](/user/nestjs-gcloud-storage) [@google-cloud](/user/google-cloud)/storage
    
  2. 配置模块: 在你的 NestJS 应用程序中,你需要配置并导入 GCloudStorageModule。通常,你会在 AppModule 中进行这样的配置。

    import { Module } from '[@nestjs](/user/nestjs)/common';
    import { GCloudStorageModule, GCloudStorageOptions } from '[[@nestjs](/user/nestjs)-gcloud-storage](/user/nestjs-gcloud-storage)';
    
    const gcloudStorageOptions: GCloudStorageOptions = {
      projectId: 'your-project-id',
      keyFilename: 'path/to/your-keyfile.json',
    };
    
    [@Module](/user/Module)({
      imports: [
        GCloudStorageModule.register(gcloudStorageOptions),
      ],
    })
    export class AppModule {}
    
  3. 创建服务: 创建一个服务来与 Google Cloud Storage 进行交互。

    import { Injectable } from '[@nestjs](/user/nestjs)/common';
    import { InjectGCloudStorageClient } from '[[@nestjs](/user/nestjs)-gcloud-storage](/user/nestjs-gcloud-storage)';
    
    [@Injectable](/user/Injectable)()
    export class StorageService {
      constructor(@InjectGCloudStorageClient() private readonly storageClient) {}
    
      async uploadFile(bucketName: string, filePath: string, fileName: string): Promise<void> {
        const bucket = this.storageClient.bucket(bucketName);
        const file = bucket.file(fileName);
    
        await bucket.upload(filePath, {
          destination: file.name,
        });
      }
    
      async downloadFile(bucketName: string, fileName: string, destPath: string): Promise<void> {
        const bucket = this.storageClient.bucket(bucketName);
        const file = bucket.file(fileName);
    
        await file.download({
          destination: destPath,
        });
      }
    }
    
  4. 使用服务: 在控制器或其他服务中注入 StorageService 并调用其方法。

    import { Controller, Get, Post, UploadedFile, UseInterceptors } from '[@nestjs](/user/nestjs)/common';
    import { FileInterceptor } from '[@nestjs](/user/nestjs)/platform-express';
    import { StorageService } from './storage.service';
    
    [@Controller](/user/Controller)('storage')
    export class StorageController {
      constructor(private readonly storageService: StorageService) {}
    
      @Post('upload')
      @UseInterceptors(FileInterceptor('file'))
      async uploadFile(@UploadedFile() file: Express.Multer.File): Promise<any> {
        await this.storageService.uploadFile('your-bucket-name', file.path, file.originalname);
        return { message: 'File uploaded successfully' };
      }
    
      @Get('download')
      async downloadFile(): Promise<any> {
        await this.storageService.downloadFile('your-bucket-name', 'filename.txt', '/path/to/download');
        return { message: 'File downloaded successfully' };
      }
    }
    

这些步骤将帮助你在 NestJS 应用程序中使用 nestjs-gcloud-storage 插件来与 Google Cloud Storage 进行交互。请确保替换上述代码中的占位符(如项目 ID、密钥文件路径、存储桶名称和文件路径)为实际值。

nestjs-gcloud-storage 是一个用于 NestJS 的 Google Cloud Storage 插件。首先,在项目中安装该插件和所需的依赖:

npm install @ nestjs-gcloud-storage google-cloud-storage

接着,在模块文件中导入 GCloudStorageModule,并配置你的 Google Cloud 服务账户凭证:

import { Module } from '@nestjs/common';
import { GCloudStorageModule } from 'nestjs-gcloud-storage';

@Module({
  imports: [
    GCloudStorageModule.register({
      projectId: 'your-project-id',
      keyFilename: './path/to/your-keyfile.json',
    }),
  ],
})
export class AppModule {}

现在你可以使用 @InjectGCloudStorage() 装饰器注入服务,并使用它提供的功能上传、下载和管理存储桶中的文件。

回到顶部