2014-07-07 13 views
5

Nie wiem, czy jest to istotne, ale używam języka Java z biblioteką pamięci masowej i Android-0.2.0.aar do przesłania.Czy mogę przesłać strumień do magazynu BLOB platformy Azure bez określania jego długości z góry?

mogę przesyłać pliki Microsoft Azure blob przechowywania

CloudBlockBlob blob = container.getBlockBlobReference("filename.ext"); 
blob.upload(inputStream, n); 

gdzie n jest długością InputStream gdy pochodzi z pliku.

Oto mój problem: Chciałbym bezpośrednio przesyłać strumieniowo, na przykład z kamery, co nie jest możliwe, ponieważ Azure wymaga parametru długości do przesłania, który jest nieznany podczas przesyłania strumieniowego.

Czy istnieje powód, dla którego muszę podać długość? (MD5?) Czy istnieje sposób na przesłanie, gdy strumień jest wciąż produkowany (co oczywiście jest ideą InputStream w Javie, dlaczego InputStream nie ma właściwości length)?

Odpowiedz

9

Będziemy rejestrować żądanie dotyczące funkcji, aby umożliwić przesyłanie ze strumienia bez określania długości. Na razie możesz chcieć użyć metody openOutputStream, która ma metodę zapisu z bajtem [] lub int. Przykład użycia metody int znajduje się poniżej:

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

o, wow. Naucz się czegoś nowego każdego dnia. – trailmax

+1

@trailmax Mam nadzieję, że ułatwi ci to wspomniany kod C#. :) Jeśli masz inne problemy, takie jak to, o czym wspomniałeś wcześniej, prześlij zgłoszenie problemu/funkcji na naszej stronie [GitHub] (https://github.com/Azure/azure-storage-net) lub tutaj na Stack Overflow . Monitorujemy je regularnie i chętnie odpowiadamy na pytania i przyjmujemy opinie. –

+0

@ EmilyGerner-Microsoft: Byłem ciekawy, czy pamięć Blob działa tak samo, jak klient usługi. Czy muszę dodać oddzielne zadanie asynchroniczne, aby wykonać pracę. –

Powiązane problemy