You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BlobClient.generateSasUrl自动编码Blob路径是否正常?如何保留原路径?

关于Azure JavaScript SDK生成SAS URL的路径编码问题

1. 该行为是否为预期表现?

是预期表现。根据URL标准(RFC 3986),URL中的部分字符需要进行编码处理,Azure Storage JavaScript SDK在生成SAS URL时,会自动对Blob路径里的斜杠进行URL编码(转为%2F),这是符合规范的行为。编码后的URL完全可以正常访问Blob,浏览器或HTTP客户端发起请求时会自动解码路径,不会影响实际使用。

2. 如何让路径显示为/test/hoge/huga/baz.txt?

如果需要得到路径以原始斜杠形式展示的URL,可以在生成SAS URL后,用decodeURIComponent方法对整个URL进行解码:

const { BlockBlobClient, BlobSASPermissions } = require("@azure/storage-blob");

const blobClient = new BlockBlobClient(
  "DefaultEndpointsProtocol=https;AccountName=yyyy;AccountKey=xxxx;EndpointSuffix=core.windows.net",
  "test",
  "hoge/huga/baz.txt"
);

const expiresOn = new Date();
expiresOn.setMinutes(expiresOn.getMinutes() + 5);
blobClient.generateSasUrl({ expiresOn, permissions: BlobSASPermissions.from({ read: true })}).then((res) => {
  const decodedUrl = decodeURIComponent(res);
  console.log(decodedUrl); // 输出格式: https://yyyy.blob.core.windows.net/test/hoge/huga/baz.txt?sv=2024-05-04&se=2024-07-09T03:38:03Z&sr=b&sp=r&sig=wHPR6FOUyvXWdQafJ/8deC1lVH/l0/u4ZGqqLcsJDmU=
});

解码后的URL依然符合标准,不会影响Blob的访问,只是路径部分以原始斜杠形式呈现。

内容的提问来源于stack exchange,提问作者yskkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:57:12