Как получить BLOB-объект Azure без загрузки в локальный файл с помощью Java? - PullRequest
0 голосов
/ 28 ноября 2018

(для Azure для SDK 10) Я могу загрузить файл в память, но я бы хотел просто загрузить его в BLOB-объект или другой локальный объект.

  • Кажется, есть функция загрузки для BlockBlobURL, но она возвращает объект Single <>: есть ли более прямой способ просто получить содержимое BLOB-объекта?

  • Эта ссылка описывает загрузку в файл.

  • Я ищу Java-эквивалент this .

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

BlobURL имел интерфейс низкого уровня, из которого я мог извлечь поток байтов.Это был мой обходной путь:

ByteBuffer byteBuffer = blobURL.download(null, null, false, null)
                               .blockingGet()   // DownloadResponse
                               .body(null)      // Flowable<ByteBuffer>
                               .firstOrError()  
                               .blockingGet();  
0 голосов
/ 28 ноября 2018

Вы можете получить содержимое 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();
        }
    }
}
...