从Azure存储下载大型BLOB的最佳方式和最佳做法是什么?
我想使用共享访问签名或共享访问策略来制作BLOB的本地副本。
估计的BLOB大小为500 MB到1 GB
互联网连接从250Kb到4Mb不等
答案 0 :(得分:2)
如果是REST API,请使用HTTP request header
如果是Storage Client Library for .NET,请使用DownloadRangeToStream
答案 1 :(得分:1)
最好的方法取决于你的情况。是否有一个特定的原因阻止您不按照以下方式(Java代码)执行某些操作?我见过这样的例子,但是有兴趣了解为什么你认为它可能不适合你。
public class SASread
{
public static void main(String[] args) throws URISyntaxException, FileNotFoundException, StorageException, IOException
{
URI baseuri = new URI("http://greengrass.blob.core.windows.net");
CloudBlobClient blobclient = new CloudBlobClient(baseuri);
MyDownloadBlob("container1",
"sr=c&sv=2012-02-12&sig=ADsFalIpE1XkaneQpWwtpM3AhY%2BAwiUtbbo1ANbIoJA%3D&si=r",
blobclient);
}
public static void MyDownloadBlob(String containerName, String containerSAS, CloudBlobClient blobClient) throws URISyntaxException, StorageException, FileNotFoundException, IOException
{
String blobName = "image3.jpg";
String localFileName = "c:\\myoutputimages\\image3.jpg";
URI uri = new URI(blobClient.getEndpoint().toString() + "/" +
containerName + "/" +
blobName +
"?" +
containerSAS);
CloudBlockBlob sasBlob = new CloudBlockBlob(uri, blobClient);
File fileTarget = new File(localFileName);
sasBlob.download(new FileOutputStream(fileTarget));
System.out.println("The blob at:\n" + uri + "\nwas downloaded from the cloud to local file:\n" + localFileName);
}
}