我是否可以将流上传到Azure blob存储而不预先指定其长度?

我不知道它是否相关,但我使用Java与azure-storage-android-0.2.0.aar进行上传。

我可以将文件上传到Microsoft Azure blob存储

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

其中n是inputStream从文件派生时的长度。

这是我的问题:我想直接流式传输,例如来自相机,这显然是不可能的,因为Azure需要上传的长度参数,这在流式传输时是未知的。

我需要指定长度吗? (MD5?)还有一种方法可以在流仍在生成时上传(这显然是Java中的InputStream的想法,InputStream没有长度属性的原因)?

我们将记录function请求以启用从流上传而不指定长度。 现在,您可能希望使用openOutputStream方法,该方法具有使用byte []或int的write方法。 使用int方法的示例如下:

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