在Azure Android Storage SDK上上传blob文件期间取得进展

时间:2016-08-01 20:15:06

标签: java android azure android-asynctask azure-storage-blobs

我使用这种方法在Blob上传一些文件(有些文件很大,需要几分钟才能上传)。

panel.getInputMap().put(KeyStroke.getKeyStroke("shift " + Character.toString(a)), "recordTypedKey");

如您所见,我使用 private void updateFilesOnBlob(){ try { String timestamp = Tools.generateTimeStamp(); // Retrieve storage account from connection-string. CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString); // Create the blob client. CloudBlobClient blobClient = storageAccount.createCloudBlobClient(); // Retrieve reference to a previously created container. CloudBlobContainer container = blobClient.getContainerReference(CONTAINER_NAME); // Upload each file on Blob for (int i = 0; i< pathsArrayList.size(); i++) { // Define the path to a local file. final String filePath = pathsArrayList.get(i); CloudBlockBlob blob = container.getBlockBlobReference(timestamp + "/" + filenameFromPath(pathsArrayList.get(i))); File source = new File(filePath); blob.upload(new FileInputStream(source), source.length()); } } catch (Exception e) { // Output the stack trace. e.printStackTrace(); } } 开始上传文件。有没有办法获得进度百分比?

当然,我已将此方法运行到AsyncTask的blob.upload()中,因此在doInBackground中更新UI应该很容易。我只需要知道上传过程的进展情况。

2 个答案:

答案 0 :(得分:0)

@PaoloRotolo,有一个blog介绍了如何在上传blob的过程中使用C#制作流程栏。它与Java中的Android非常相似。您可以尝试参考博客的示例代码和Azure存储SDK for Android的javadocs来编写它。

答案 1 :(得分:-1)

您可以使用blob.CopyState.BytesCopiedblob.CopyState.TotalBytes来计算百分比