问题描述
我需要获得可共享的链接,世界可以在其中查看来自 azure blob 且使用 spring boot 过期的文件。提前致谢!
解决方法
尝试下面的代码来获取对 blob 具有读取权限的 SAS 令牌:
import com.azure.storage.blob.sas.BlobServiceSasSignatureValues;
import com.azure.storage.blob.sas.BlobSasPermission;
import com.azure.storage.blob.BlobClient;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;
import java.time.OffsetDateTime;
public class App {
public static void main(String[] args) {
String connString = "<storage account connection string>";
String containerName = "<container name>";
String blobName = "<blob name>";
BlobServiceClient client = new BlobServiceClientBuilder().connectionString(connString).buildClient();
BlobClient blobClient = client.getBlobContainerClient(containerName).getBlobClient(blobName);
BlobSasPermission blobSasPermission = new BlobSasPermission().setReadPermission(true); // grant read
// permission
// onmy
OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(2); // after 2 days expire
BlobServiceSasSignatureValues values = new BlobServiceSasSignatureValues(expiryTime,blobSasPermission)
.setStartTime(OffsetDateTime.now());
System.out.println(blobClient.getBlobUrl() + "?" + blobClient.generateSas(values));
}
}
maven 依赖:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>12.9.0</version>
</dependency>
结果:
使用此 URL 访问此文件: