提问者:小点点

如何使用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/store/blob/sas/Blob ServiceSasSignatureValues.html

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

共3个答案

匿名用户

下面的代码对我有用。

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));

匿名用户

您可以按如下方式为maven使用azure storage SDK:

 <dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-storage</artifactId>
    <version>8.3.0</version>
</dependency>

然后按照下面的代码生成SAS令牌,您可以将其附加到存储URL中。

    CloudStorageAccount account = CloudStorageAccount.parse(blobConnectionString);
        
     // Create a blob service client
     CloudBlobClient blobClient = account.createCloudBlobClient();
                              
     CloudBlobContainer container = blobClient.getContainerReference(containerName);
    
     Date expirationTime = Date.from(LocalDateTime.now().plusDays(7).atZone(ZoneOffset.UTC).toInstant());
    SharedAccessBlobPolicy sharedAccessPolicy=new SharedAccessBlobPolicy();
    sharedAccessPolicy.setPermissions(EnumSet.of(SharedAccessBlobPermissions.READ, 
        SharedAccessBlobPermissions.WRITE,SharedAccessBlobPermissions.ADD));
    sharedAccessPolicy.setSharedAccessStartTime(new Date());
    sharedAccessPolicy.setSharedAccessExpiryTime(expirationTime);
        
    String sasToken = container.generateSharedAccessSignature(sharedAccessPolicy, null);

匿名用户

您可以调用RESTAPI。看https://docs.microsoft.com/en-us/rest/api/storageservices/create-service-sas.