Search code examples
azureazure-storageazure-blob-storageazure-java-sdk

How to generate azure blob storage SAS url using java?


I want to generate a SAS url that i can share with user to connect to storage account and upload a file to any location.

How can i generate the SAS url using java api.

i found one documentation but looks like all api are depreciated 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'

Solution

  • Following code worked for me.

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