尝试使用java sdk下载大小为2 GB的页面blob,但由于下载的文件大小与实际文件大小不匹配而导致存储异常失败
在多次尝试时会看到相同的结果,尽管下载的文件大小略有变化。将超时设置为最大值也没有帮助。 此外,当我使用Azure门户下载相同的vhd时,我看到下载完成但仅部分完成。它通常与使用SDK下载的版本相当。
在SDK代码中,我可以看到正在使用HTTpUrlConnection。这可能是个问题吗? Windows机器上的相同代码具有类似的结果,但只有下载的文件的大小更多MB但不完整。
有关如何使其发挥作用的任何想法?
使用的代码段是
URI blobEndpoint = null;
String uriString = "http://" + "sorageaccount" + ".blob.core.windows.net";
blobEndpoint = new URI(uriString);
CloudBlobClient blobClient = new CloudBlobClient(blobEndpoint,
new StorageCredentialsAccountAndKey("abcd", "passed"));
CloudBlobContainer container = blobClient.getContainerReference(Constants.STORAGE_CONTAINER_NAME);
CloudPageBlob pageBlob = container.getPageBlobReference("http://abcd.blob.core.windows.net/sc/someimg.vhd");
System.out.println("Page Blob Name: " + pageBlob.getName());
OutputStream outStream = new FileOutputStream(new File("/Users/myself/Downloads/TestDownload.vhd"));
System.out.println("Starting download now ... ");
BlobRequestOptions options = new BlobRequestOptions();
options.setUseTransactionalContentMD5(true);
options.setStoreBlobContentMD5 (true); // Set full blob level MD5
options.setTimeoutIntervalInMs(Integer.MAX_VALUE);
options.setRetryPolicyFactory(new RetryLinearRetry());
pageBlob.download(outStream, null, options, null);
outStream.close();