微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Java生成Azure Blob存储SAS URL?

如何解决如何使用Java生成Azure Blob存储SAS URL?

我想生成一个SAS URL,可以与用户共享以连接到存储帐户并将文件上传到任何位置。

如何使用Java api生成SAS网址。

我找到了一个文档,但看起来所有api都已弃用https://azuresdkdocs.blob.core.windows.net/$web/java/azure-storage-blob/12.0.0/com/azure/storage/blob/sas/BlobServiceSasSignatureValues.html


Env:
Java Version: 8.0
BLOB STORAGE JAVA SDK: group: 'com.azure',name: 'azure-storage-blob',version: '12.8.0'

解决方法

有一个可以调用的REST API。参见https://docs.microsoft.com/en-us/rest/api/storageservices/create-service-sas

,

以下代码对我有用。

BlobContainerSasPermission blobContainerSasPermission = new BlobContainerSasPermission()
                .setReadPermission(true)
                .setWritePermission(true)
                .setListPermission(true);
        BlobServiceSasSignatureValues builder = new BlobServiceSasSignatureValues(OffsetDateTime.now().plusDays(1),blobContainerSasPermission)
                .setProtocol(SasProtocol.HTTPS_ONLY);
        BlobClient client = new BlobClientBuilder()
                .connectionString("connection string")
                .blobName("")
                .buildClient();
        String blobContainerName = "test";
        return String.format("https://%s.blob.core.windows.net/%s?%s",client.getAccountName(),blobContainerName,client.generateSas(builder));
,

经过测试后,您还可以按照以下形式生成SAS:

        StorageSharedKeyCredential credential = new StorageSharedKeyCredential("<accountName>","<accountKey>");


        String sas = new BlobServiceSasSignatureValues()
                .setExpiryTime(OffsetDateTime.now().plusHours(1))
                .setPermissions(new BlobSasPermission().setReadPermission(true))
                .setContainerName("<containerName>")
                .setBlobName("blobName")
                .generateSasQueryParameters(credential)
                .encode();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。