是否可以通过 storagenestJS sdk 上传带有元数据的文件?

Posted

技术标签:

【中文标题】是否可以通过 storagenestJS sdk 上传带有元数据的文件?【英文标题】:Is it possible upload file with metadata by storage nestJS sdk? 【发布时间】:2021-04-14 18:13:27 【问题描述】:

我正在使用 Azure 存储和 Nestjs。我正在使用 Azure 存储来存储一些静态文件。我可以通过 Nestjs 存储 SDK 成功上传文件。现在我需要上传一个包含一些自定义 blob 元数据的文件,我已经浏览了Nestjs storage SDK 的源代码,但似乎没有预定义的方法可以做到这一点。那么是否可以上传带有自定义元数据的 blob?或者有什么解决办法?

谢谢!

【问题讨论】:

【参考方案1】:

我也查看了azureStorageService的源代码,它没有提供有用的方法。但是上传操作回复了一个带有 SAS 令牌的 storageUrl,我们可以使用它来发出另一个 HTTP 请求:set-blob-metaData 来设置 blob 元数据。这是我的测试代码,name 是我测试中的元数据:

@Post('azure/upload')
  @UseInterceptors(
    AzureStorageFileInterceptor('file', null),
  )
  async UploadedFilesUsingInterceptor(
    @UploadedFile()
    file: UploadedFileMetadata,
    ) 
      file = 
        ...file,
        buffer : Buffer.from('file'),
        originalname: 'somename.txt'
      ;
      const storageUrl = await this.azureStorage.upload(file);
      //call rest api to set metadata
      await this.httpService.put(storageUrl + "&comp=metadata",null,headers:'x-ms-meta-name':'orginal name here')
      .subscribe((response) => 
        console.log(response.status);
      );
   
    Logger.log(storageUrl);
  

结果:

【讨论】:

超级!谢谢@Stanley,它对我有用。我相信我可以根据这个 URL 做一些其他的操作。

以上是关于是否可以通过 storagenestJS sdk 上传带有元数据的文件?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以根据 SDK 版本隐藏代码

是否可以在 Flutter Web 应用程序中使用 Firebase 管理 SDK?

是否可以录制 Agora SDK 视频通话?

是否可以使用带有 @hide 注释的 Android SDK 方法?

是否可以在 Java 中使用特定于平台的跨平台 sdk 方法?

是否可以仅将 Facebook 移动 SDK 用于移动应用安装广告?