如何在nodejs sdk v12中生成带有SAS签名的天蓝色blob URL?

问题描述 投票:0回答:2

以前(在像v2这样的旧sdk中,您可以生成如下所示的sas网址(用于blob的已签名共享网址):

var azure = require('azure-storage');
var blobService = azure.createBlobService();

var startDate = new Date();
var expiryDate = new Date(startDate);
expiryDate.setMinutes(startDate.getMinutes() + 100);
startDate.setMinutes(startDate.getMinutes() - 100);

var sharedAccessPolicy = {
  AccessPolicy: {
    Permissions: azure.BlobUtilities.SharedAccessPermissions.READ,
    Start: startDate,
    Expiry: expiryDate
  }
};

var token = blobService.generateSharedAccessSignature(containerName, blobName, sharedAccessPolicy);
var sasUrl = blobService.getUrl(containerName, blobName, token);

我想知道我们如何在sdk v12中生成该URL?我在v12中找不到有关Sas URL的任何文档。

BlobUtilities和getUrl()方法在v12中也不可用(在v12中,每个模块都有单独的包,在我的情况下,我使用的是require(“ @ azure / storage-blob”);)]

谢谢。

node.js azure azure-storage azure-storage-blobs
2个回答
0
投票

关于此问题,请参考以下代码

var storage = require("@azure/storage-blob")
  const accountname ="blobstorage0516";
    const key = "";
    const cerds = new storage.StorageSharedKeyCredential(accountname,key);
    const blobServiceClient = new storage.BlobServiceClient(`https://${accountname}.blob.core.windows.net`,cerds);
    const containerName="test";
    const client =blobServiceClient.getContainerClient(containerName)
    const blobName="help.txt";
    const blobClient = client.getBlobClient(blobName);

    const blobSAS = storage.generateBlobSASQueryParameters({
      containerName, 
      blobName, 
      permissions: storage.BlobSASPermissions.parse("racwd"), 
      startsOn: new Date(),
      expiresOn: new Date(new Date().valueOf() + 86400)
    },
    cerds 
  ).toString();

    const sasUrl= blobClient.url+"?"+blobSAS;
    console.log(sasUrl);

enter image description here


0
投票

您可以使用generateBlobSASQueryParameters进行操作。例如,请参见下面的代码:

generateBlobSASQueryParameters
© www.soinside.com 2019 - 2024. All rights reserved.