如何解决Azure Blob 存储客户端库获取下载链接
这个问题是关于 Azure blob 存储客户端库的哪个属性会给我 blob 的 url。
我正在按照以下教程获取容器中所有 blob 的列表。我希望最终能够点击一个 blob 并下载它。
我不知道如何从下面的代码中获取 blob 的 SAS URL 链接。就像 blobItem 的什么属性会给我下载它的 URL。
blobItem。哪个属性???
fileList.innerHTML += `<option value=${blobItem.value.name}>${blobItem.soME LINK}</option>`;
来自以下块
const listFiles = async () => {
fileList.size = 0;
fileList.innerHTML = "";
try {
reportStatus("Retrieving file list...");
let iter = containerClient.listBlobsFlat();
let blobItem = await iter.next();
while (!blobItem.done) {
fileList.size += 1;
// fileList.innerHTML += `<option>${blobItem.value.name}</option>`;
fileList.innerHTML += `<option value=${blobItem.value.name}>${blobItem.soME LINK}</option>`;
blobItem = await iter.next();
}
if (fileList.size > 0) {
reportStatus("Done.");
} else {
reportStatus("The container does not contain any files.");
}
} catch (error) {
reportStatus(error.message);
}
};
解决方法
我想我得到了答案,以防它对某人有所帮助。这行代码将提供容器内 blob 项的 url
${containerClient.getBlobClient(blobItem.value.name).url}
这就是在上面发布的文档中可以看到的。替换这一行
fileList.innerHTML += `<option>${blobItem.value.name}</option>`;
可以看到网址
fileList.innerHTML += `<option value=${blobItem.value.name}>${containerClient.getBlobClient(blobItem.value.name).url}</option>`;
,
根据 Create a service SAS for a blob 处的文档:
function getBlobSasUri(containerClient,blobName,sharedKeyCredential,storedPolicyName) {
const sasOptions = {
containerName: containerClient.containerName,blobName: blobName
};
if (storedPolicyName == null) {
sasOptions.startsOn = new Date();
sasOptions.expiresOn = new Date(new Date().valueOf() + 3600 * 1000);
sasOptions.permissions = BlobSASPermissions.parse("r");
} else {
sasOptions.identifier = storedPolicyName;
}
const sasToken = generateBlobSASQueryParameters(sasOptions,sharedKeyCredential).toString();
console.log(`SAS token for blob is: ${sasToken}`);
return `${containerClient.getBlockBlobClient(blobName).url}?${sasToken}`;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。