2014-07-07 7 views
5

Ich weiß nicht, ob es relevant ist, aber ich verwende Java mit dem azure-storage-android-0.2.0.aar für den Upload.Kann ich einen Stream in den Azure-Blobspeicher hochladen, ohne seine Länge im Voraus anzugeben?

Ich kann

Dateien in Microsoft Azure Blob Speicher laden
CloudBlockBlob blob = container.getBlockBlobReference("filename.ext"); 
blob.upload(inputStream, n); 

wobei n die Länge des input ist, wenn es aus der Datei stammt.

Hier ist mein Problem: Ich möchte direkt z. B. von der Kamera streamen, was anscheinend nicht möglich ist, da Azure den Längenparameter für den Upload benötigt, der beim Streaming noch unbekannt ist.

Gibt es einen Grund, warum ich die Länge angeben muss? (MD5?) Und gibt es eine Möglichkeit zum Hochladen, während der Stream noch produziert wird (was ist offensichtlich die Idee eines InputStream in Java, der Grund, warum InputStream keine Längeneigenschaft hat)?

Antwort

9

Wir protokollieren die Feature-Anforderung, um das Hochladen aus einem Stream ohne Angabe der Länge zu ermöglichen. Für den Moment möchten Sie vielleicht die openOutputStream-Methode verwenden, die über eine Schreibmethode verfügt, die ein byte [] oder ein int verwendet. Ein Beispiel mit der int-Methode ist unten:

CloudBlockBlob blockBlob = container.getBlockBlobReference(‘myblob’); // assuming container was already created 

    BlobOutputStream blobOutputStream = blockBlob.openOutputStream(); 
    ByteArrayInputStream inputStream = new ByteArrayInputStream(buffer); // assuming buffer is a byte[] with your data 

    int next = inputStream.read(); 
    while (next != -1) { 
      blobOutputStream.write(next); 
      next = inputStream.read(); 
    } 

    blobOutputStream.close(); 
+0

oh, wow. Lerne jeden Tag etwas Neues – trailmax

+1

@trailmax Hoffentlich macht das deinen oben erwähnten C# -Code leichter. :) Wenn Sie weitere Probleme haben, wie zum Beispiel das, was Sie zuvor erwähnt haben, veröffentlichen Sie bitte eine Anfrage zu einem Problem/Feature auf unserer [GitHub-Seite] (https://github.com/Azure/azure-storage-net) oder hier auf Stack Overflow . Wir überwachen beide regelmäßig und beantworten gerne Fragen und nehmen Feedback entgegen. –

+0

@ EmilyGerner-Microsoft: Ich war neugierig, ob der Blob-Speicher genauso funktioniert wie der Service-Client. Muss ich eine separate asynchrone Aufgabe hinzufügen, um die Arbeit zu erledigen. –

Verwandte Themen