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

4ca51a643e8908fbed0abfe6db4d2817.png

样本代码:

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

}

}

}

输出结果:

03b3231c3c49bd03e6ecddfbc75787d1.png

如果要生成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")));

希望对你有帮助。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐