gpt4 book ai didi

azure - 为 Azure Blob 生成预签名 Url 引发空指针异常

转载 作者:行者123 更新时间:2023-12-03 03:47:50 30 4
gpt4 key购买 nike

我想生成一个预签名 URL/SAS,以便具有该 URL 的任何人都可以访问我的文件。

SDK版本:12.8.0

我编写了以下代码:

BlockBlobClient blockBlobClient = objectStoreService.getBlobContainerClient().getBlobClient(fileName).getBlockBlobClient();

String blobUrl = Utility.urlDecode(blockBlobClient.getBlobUrl());
BlobSasPermission blobPermission = new BlobSasPermission()
.setReadPermission(true);

BlobServiceSasSignatureValues blobServiceSasSignatureValues = new BlobServiceSasSignatureValues(
OffsetDateTime.now(ZoneOffset.UTC).plusSeconds(1000 * 60 * 60),
blobPermission
);

blobUrl = blobUrl + "?" + blockBlobClient.generateSas(blobServiceSasSignatureValues);

但是代码抛出错误为

java.lang.NullPointerException: The argument must not be null or an empty string. Argument name: storageSharedKeyCredentials.

编辑1:尝试过:

UserDelegationKey userDelegationKey = blobServiceClient.getUserDelegationKey(keyStart,keyExpiry);

String blobUrl = Utility.urlDecode(blobClient.getBlobUrl());

blobUrl = blobUrl + "?" + blobClient.generateUserDelegationSas(blobServiceSasSignatureValues,userDelegationKey);

但现在得到:

“状态代码 403,”AuthenticationFailed服务器未能验证请求。确保授权 header 的值格式正确,包括签名。\nRequestId:7b0f0d75-d01e-00a8-4d84-7c9aa3000000\n时间:2021-07-19T09:54:31.1312999Z此资源级别不允许指定的签名资源“”,

最佳答案

假设您拥有具有有效权限的 SAS token 、Blob 容器 URL 和 Blob 名称,则可以使用以下简单逻辑生成 Blob 的 SAS URL:

{blob-container-url}/{blob-name}?{sas-token}

如果您想使用 SDK,首先需要使用 Blob 容器 URL 和 SAS token 创建一个 BlobContainerClient,然后使用该 Blob 容器客户端创建一个 BlockBlobClient:

BlobContainerClient blobContainerClient = new BlobContainerClientBuilder()
.endpoint("{blob-container-url}?{sas-token}")
.buildClient();

BlockBlobClient blockBlobClient = blobContainerClient.getBlobClient("{blob-name}").getBlockBlobClient();

然后,您可以使用此 blockBlobClient 对您的 Blob 执行操作。您可以使用getUrl()获取 blob 的 URL 的方法。

关于azure - 为 Azure Blob 生成预签名 Url 引发空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68437669/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com