(对于Azure for SDK 10)可以将文件下载到内存中,但是我想将其下载到Blob或其他本地对象中。
答案 0 :(得分:1)
BlobURL有一个低级接口,我可以从中提取字节流。这是我的解决方法:
ByteBuffer byteBuffer = blobURL.download(null, null, false, null)
.blockingGet() // DownloadResponse
.body(null) // Flowable<ByteBuffer>
.firstOrError()
.blockingGet();
答案 1 :(得分:0)
您可以使用以下示例代码直接获取blob内容(而不是本地文件),请尝试一下。
import com.microsoft.azure.storage.CloudStorageAccount;
import com.microsoft.azure.storage.blob.CloudBlob;
import com.microsoft.azure.storage.blob.CloudBlobClient;
import com.microsoft.azure.storage.blob.CloudBlobContainer;
import org.apache.commons.io.IOUtils;
import java.io.InputStream;
import java.io.InputStreamReader;
public class GetBlobContent {
public static final String storageConnectionString =
"DefaultEndpointsProtocol=http;" +
"AccountName=***;" +
"AccountKey=***";
public static void main(String[] args) {
try {
CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
CloudBlobContainer container = blobClient.getContainerReference("jay");
CloudBlob blob = container.getBlockBlobReference("test.txt");
InputStream input = blob.openInputStream();
InputStreamReader inr = new InputStreamReader(input, "UTF-8");
String utf8str = IOUtils.toString(inr);
System.out.println(utf8str);
System.out.println("download success");
} catch (Exception e) {
// Output the stack trace.
e.printStackTrace();
}
}
}