【问题标题】:How to generate azure blob storage SAS url using java?如何使用 java 生成 azure blob 存储 SAS url?
【发布时间】:2020-11-11 05:56:17
【问题描述】:

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

如何使用 java api 生成 SAS url。

我找到了一份文档,但似乎所有 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'

【问题讨论】:

  • @Frank Gong 并没有真正帮助.. 我什至看不到有可用于 java docs.microsoft.com/en-us/azure/storage/blobs/… 的示例文档
  • 请检查这是否有帮助github.com/Azure/azure-storage-java
  • @MohitSingh,这是我post的文档,但是我发现了一些问题,所以我把它删除了。
  • @Frank Gong 目前我们没有任何关于 java api 的文档吗?你分享的帖子还有问题吗?
  • @MohitSingh。请等我测试。

标签: azure azure-storage azure-blob-storage azure-java-sdk


【解决方案1】:

以下代码对我有用。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      【讨论】:

      猜你喜欢
      • 2020-10-12
      • 2015-04-23
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多