2016-08-01 20 views
0

Ich verwende diese Methode, um einige Dateien auf Blob hochzuladen (einige Dateien sind groß und es dauert einige Minuten, um sie hochzuladen).Erhalten Sie Fortschritte während des Hochladens von Blobdateien auf Azure Android Storage SDK

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

Wie Sie sehen können, verwende ich blob.upload() Hochladen der Datei zu starten. Gibt es eine Möglichkeit, den Fortschrittsprozentsatz zu erhalten?

Natürlich, ich führe diese Methode in AsyncTask doInBackground, so sollte es einfach sein, die Benutzeroberfläche in onProgressUpdate() zu aktualisieren. Ich muss nur den Fortschritt des Hochladevorgangs wissen.

Antwort

0

@PaoloRotolo zu berechnen, gibt es ein blog, die erläutert, wie die Prozess-Bar mit C# in dem Prozess machen Klecks zu. Es ist sehr ähnlich mit Android in Java. Sie können versuchen, auf den Beispielcode des Blogs und das javadocs Azure Storage SDK für Android zu verweisen, um es zu schreiben.