天天看点

java azure blobs sas_仅使用SAS令牌连接到Azure存储帐户?

我在门户上为我的特定blob生成SAS令牌,然后通过令牌成功下载它。

java azure blobs sas_仅使用SAS令牌连接到Azure存储帐户?

样本代码:

import com.microsoft.azure.storage.blob.CloudBlockBlob;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.URI;

public class DownloadBlobSAS {

public static final String blobSasToken = "***";

public static void main(String[] args) {

try {

CloudBlockBlob sasBlob = new CloudBlockBlob(new URI(blobSasToken));

InputStream input = sasBlob.openInputStream();

InputStreamReader inr = new InputStreamReader(input, "UTF-8");

String utf8str = org.apache.commons.io.IOUtils.toString(inr);

System.out.println(utf8str);

System.out.println("print done");

} catch (Exception e) {

e.printStackTrace();

}

}

}

输出结果:

java azure blobs sas_仅使用SAS令牌连接到Azure存储帐户?

如果要生成SAS令牌,需要首先提供连接字符串以访问容器或blob。

然后你可以用

generateSharedAccessSignature()

方法来创建SAS令牌。您可以参考

sample code

:

SharedAccessBlobPolicy sp = createSharedAccessPolicy(

EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.LIST), 300);

BlobContainerPermissions perms = new BlobContainerPermissions();

perms.getSharedAccessPolicies().put("readperm", sp);

this.container.uploadPermissions(perms);

Thread.sleep(30000);

CloudBlockBlob sasBlob = new CloudBlockBlob(new URI(this.blob.getUri().toString() + "?"

+ this.blob.generateSharedAccessSignature(null, "readperm")));

希望对你有帮助。