2016-08-01 83 views
0

我正在使用此方法上传Blob上的某些文件(某些文件很大,需要几分钟才能上传)。在Azure Android存储SDK上的blob文件上传过程中获取进度

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

如您所见,我使用blob.upload()开始上传文件。有没有办法获得进度百分比?

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

回答

0

@PaoloRotolo,有一个blog,介绍如何使C#的过程中吧上传Blob的过程。它与Java中的Android非常相似。您可以尝试参考博客的示例代码以及适用于Android的Azure存储SDK的javadocs以编写它。

相关问题