我正在努力将blob复制到同一存储帐户中的另一个容器中。
const mainContainerClient = this.blobServiceClient.getContainerClient(configuration.storage.MAIN_CONTAINER);
const archiveContainerClient = this.blobServiceClient.getContainerClient(configuration.storage.ARCHIVE_CONTAINER);
const blobs = mainContainerClient.listBlobsFlat();
for await (const blob of await blobs) {
let file = mainContainerClient.getBlockBlobClient(blob.name);
const archiveBlobClient = archiveContainerClient.getBlobClient(blob.name);
const newBlob = await archiveBlobClient.syncCopyFromURL(file.url);
}
它与syncCopyFromURL一起使用,但仅当我使用手动生成的SAS令牌传递URL时才可用。我不确定如何使用SDK。
答案 0 :(得分:0)
也许您可以尝试以下方法,您可以参考此link。
var storage = require("azure-storage")
var startDate = new Date();
var expiryDate = new Date();
startDate.setTime(startDate.getTime() - 5*60*1000);
expiryDate.setTime(expiryDate.getTime() + 24*60*60*1000);
var AccountSasConstants = storage.Constants.AccountSasConstants;
var sharedAccessPolicy = {
AccessPolicy: {
Services: AccountSasConstants.Services.BLOB ,
ResourceTypes: AccountSasConstants.Resources.SERVICE +
AccountSasConstants.Resources.CONTAINER +
AccountSasConstants.Resources.OBJECT,
Permissions: AccountSasConstants.Permissions.READ +
AccountSasConstants.Permissions.ADD +
AccountSasConstants.Permissions.CREATE +
AccountSasConstants.Permissions.WRITE +
AccountSasConstants.Permissions.DELETE +
AccountSasConstants.Permissions.LIST,
Protocols: AccountSasConstants.Protocols.HTTPSORHTTP,
Start: startDate,
Expiry: expiryDate
}
};
const accountname ="blobstorage0516";
const key = "";
var sas =storage.generateAccountSharedAccessSignature(accountname,key,sharedAccessPolicy);
console.log(sas);
或者您可以直接生成网址
var azure = require('azure-storage');
var blobService = azure.createBlobService('storage connection');
// Create a SAS token that expires in an hour
// Set start time to five minutes ago to avoid clock skew.
var startDate = new Date();
startDate.setMinutes(startDate.getMinutes() - 5);
var expiryDate = new Date(startDate);
expiryDate.setMinutes(startDate.getMinutes() + 60);
permissions = azure.BlobUtilities.SharedAccessPermissions.READ;
var sharedAccessPolicy = {
AccessPolicy: {
Permissions: permissions,
Start: startDate,
Expiry: expiryDate
}
};
var container='test';
var blobName='test.txt';
var sasToken = blobService.generateSharedAccessSignature(container, blobName, sharedAccessPolicy);
var url=blobService.getUrl(container,blobName,sasToken);
console.log(url);