使用Azure java SDK下载Blob页面不会下载完整的Blob

时间:2014-03-21 20:17:48

标签: azure-java-sdk

尝试使用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();

0 个答案:

没有答案