我正在创建一个应用程序,我需要在浏览器中查看 blob 而不是下载它们。目前,具有令牌的 blob 链接会下载相应的 blob。
我在这里得到了一些在浏览器中查看 blob 的参考: https://github.com/Azure-Samples/storage-blob-java-getting-started/blob/master/src/BlobBasics.java (从第 141 行开始查看)
这是我创建令牌的代码:
@Test
public String testBlobSaS(CloudBlob blob, CloudBlobContainer container) throws InvalidKeyException,
IllegalArgumentException, StorageException, URISyntaxException, InterruptedException {
SharedAccessBlobPolicy sp = createSharedAccessBlobPolicy(
EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.LIST), 100);
BlobContainerPermissions perms = new BlobContainerPermissions();
perms.getSharedAccessPolicies().put("readperm", sp);
perms.setPublicAccess(BlobContainerPublicAccessType.CONTAINER);
container.uploadPermissions(perms);
String sas = blob.generateSharedAccessSignature(sp, null);
CloudBlockBlob sasBlob = new CloudBlockBlob(
new URI(blob.getUri().toString() + "?" + blob.generateSharedAccessSignature(null, "readperm")));
sasBlob.download(new ByteArrayOutputStream());
CloudBlob blobFromUri = new CloudBlockBlob(
PathUtility.addToQuery(blob.getStorageUri(), blob.generateSharedAccessSignature(null, "readperm")));
assertEquals(StorageCredentialsSharedAccessSignature.class.toString(),
blobFromUri.getServiceClient().getCredentials().getClass().toString());
StorageCredentials creds = new StorageCredentialsSharedAccessSignature(
blob.generateSharedAccessSignature(null, "readperm")); …Run Code Online (Sandbox Code Playgroud)