Nodejs Nestjs Azure Storage插件@nestjs/azure-storage的使用

Nodejs Nestjs Azure Storage插件@nestjs/azure-storage的使用
在使用 NestJS 和 Azure Storage 时,你可以通过 [@nestjs](/user/nestjs)/azure-storage 插件来简化与 Azure Blob Storage 的交互。以下是一个简单的指南,帮助你开始使用这个插件。

安装依赖

首先,你需要安装必要的包:

npm install [@nestjs](/user/nestjs)/azure-storage
npm install @azure/storage-blob

配置模块

接下来,在你的 NestJS 应用程序中配置 AzureStorageModule。你可以在 app.module.ts 中进行如下配置:

import { Module } from '[@nestjs](/user/nestjs)/common';
import { AzureStorageModule } from '[@nestjs](/user/nestjs)/azure-storage';

@Module({
  imports: [
    AzureStorageModule.forRoot({
      connectionString: 'your-connection-string',
      containerName: 'your-container-name',
    }),
  ],
})
export class AppModule {}

这里的 connectionString 是从 Azure 存储帐户获取的连接字符串,而 containerName 是你要使用的容器名称。

使用服务

现在你可以在你的服务中注入 IAzureStorageService 来与 Azure Blob Storage 进行交互。例如:

import { Injectable } from '[@nestjs](/user/nestjs)/common';
import { InjectAzureStorage } from '[@nestjs](/user/nestjs)/azure-storage';
import { IAzureStorageService } from '[@nestjs](/user/nestjs)/azure-storage/interfaces/iazure-storage-service.interface';

@Injectable()
export class StorageService {
  constructor(
    @InjectAzureStorage() private readonly storageService: IAzureStorageService,
  ) {}

  async uploadFile(fileName: string, fileBuffer: Buffer) {
    return this.storageService.uploadFile(fileName, fileBuffer);
  }

  async downloadFile(fileName: string) {
    return this.storageService.downloadFile(fileName);
  }

  async deleteFile(fileName: string) {
    return this.storageService.deleteFile(fileName);
  }
}

控制器示例

最后,你可以创建一个控制器来暴露这些功能:

import { Controller, Get, Post, Body, Param, Delete } from '[@nestjs](/user/nestjs)/common';
import { StorageService } from './storage.service';

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

  @Post(':fileName')
  async upload(@Param('fileName') fileName: string, @Body() fileBuffer: Buffer) {
    return this.storageService.uploadFile(fileName, fileBuffer);
  }

  @Get(':fileName')
  async download(@Param('fileName') fileName: string) {
    return this.storageService.downloadFile(fileName);
  }

  @Delete(':fileName')
  async delete(@Param('fileName') fileName: string) {
    return this.storageService.deleteFile(fileName);
  }
}

这样,你就设置了一个基本的 NestJS 应用来处理与 Azure Blob Storage 的交互。你可以根据需要扩展和修改这些示例代码。


3 回复

当然,让我们用一点幽默来探讨这个话题吧!

想象一下,你正在一片代码森林中探险,突然遇到了一个神秘的生物——Azure Storage。为了与它交流,你需要一种特殊的语言:@nestjs/azure-storage

首先,确保你的环境已经安装了这个魔法咒语:

npm install @nestjs/azure-storage

然后,在你的巢穴(NestJS模块)里,邀请这位新朋友加入:

import { Module } from '@nestjs/common';
import { AzureStorageModule } from '@nestjs/azure-storage';

@Module({
  imports: [
    AzureStorageModule.register({
      accountName: 'your_account_name',
      accountKey: 'your_account_key',
    }),
  ],
})
export class AppModule {}

现在,你可以开始使用这个强大的工具来存储和检索文件了。比如,上传一个文件到Azure Storage就像这样简单:

import { Injectable } from '@nestjs/common';
import { AzureStorageService } from '@nestjs/azure-storage';

@Injectable()
export class FileService {
  constructor(private readonly azureStorageService: AzureStorageService) {}

  async uploadFile(fileName: string, fileBuffer: Buffer) {
    return this.azureStorageService.upload(fileName, fileBuffer);
  }
}

记住,每次使用前都要检查你的魔法棒(API密钥)是否有效哦!希望这能帮助你在代码森林中顺利航行!


@nestjs/azure-storage 是一个用于 NestJS 应用程序的 Azure 存储库的封装。下面我将简要介绍如何在 NestJS 项目中安装和配置该库,并给出一个简单的使用示例。

安装

首先,你需要在你的 NestJS 项目中安装 @nestjs/azure-storage 和相关依赖:

npm install @nestjs/azure-storage @azure/storage-blob

配置

接下来,你需要在你的 NestJS 项目中进行一些基本的配置。这通常包括在模块中导入 AzureStorageModule 并提供必要的配置选项。

假设你有一个名为 AppModule 的主模块,你可以这样配置:

import { Module } from '@nestjs/common';
import { AzureStorageModule } from '@nestjs/azure-storage';

@Module({
  imports: [
    AzureStorageModule.register({
      accountName: 'your_account_name',
      accountKey: 'your_account_key', // 或者使用 connection string
      defaultContainer: 'your_default_container',
    }),
  ],
})
export class AppModule {}

使用

现在,你可以在任何服务或控制器中注入 IAzureStorageService 来操作 Azure Blob 存储。这里是一个简单的上传文件的例子:

import { Injectable, Inject } from '@nestjs/common';
import { IAzureStorageService } from '@nestjs/azure-storage';

@Injectable()
export class FileUploadService {
  constructor(
    @Inject(IAzureStorageService) private readonly azureStorageService: IAzureStorageService,
  ) {}

  async uploadFile(fileStream: any, container?: string): Promise<string> {
    const blobName = 'example.txt'; // 你想要保存的文件名
    const response = await this.azureStorageService.upload(fileStream, blobName, container);
    return response.requestId; // 返回请求ID作为示例
  }
}

调用

最后,在你的控制器或其他服务中调用这个方法:

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

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

  @Post('upload')
  @UseInterceptors(FileInterceptor('file'))
  async uploadFile(@UploadedFile() file: Express.Multer.File) {
    const requestId = await this.fileUploadService.uploadFile(file.buffer, 'custom-container');
    return { requestId };
  }
}

以上就是在 NestJS 中使用 @nestjs/azure-storage 插件的基本步骤。希望这对您有所帮助!

@nestjs/azure-storage 插件用于在 NestJS 应用中与 Azure 存储服务进行交互。首先安装该插件:

npm install @nestjs/azure-storage

然后,在模块文件中导入 AzureStorageModule 并配置连接字符串:

import { Module } from '@nestjs/common';
import { AzureStorageModule } from '@nestjs/azure-storage';

@Module({
  imports: [
    AzureStorageModule.register({
      connectionString: 'your-connection-string',
    }),
  ],
})
export class AppModule {}

之后,可以在服务中注入 IAzureStorageService 使用 Azure 存储功能。

回到顶部