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
相关产品推荐
相关产品推荐

