Как получить блоб Uri с помощью Azure Java Storage SDK V10 - PullRequest
0 голосов
/ 23 ноября 2018

Я попытался следовать Образцам хранилища Azure и могу загрузить BLOB-объект.Я пытаюсь получить Uri загруженного большого двоичного объекта, но не могу получить Uri.

В предыдущем SDK v7 я мог выполнять blobItem.getUri (), но не мог найти его вновая версия.Я попробовал следующее, однако метаданные не имеют Uri, на самом деле это свойства.Как мне получить Uri

    blobURL.upload(Flowable.just(ByteBuffer.wrap(image)), image.length, headers, mData, null, null)
    .flatMap(bulkBlockBlobUploadResponse -> {
        this.getContext().getLogger().info(bulkBlockBlobUploadResponse.headers().eTag());
        return Single.just(true);
    })
    .flatMap(response ->
        // Query the blob's properties and metadata.
        this.getBlockBlobURL().getProperties(null, null))
    .flatMap(blobGetPropertiesResponse -> { 
        this.getContext().getLogger().info(blobGetPropertiesResponse.headers().metadata().toString());
        return Single.just(true);
    })

Ответы [ 2 ]

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

Ответить немного поздно, но для объекта BlockBlobURL у вас есть метод toURL () .Таким образом, чтобы получить URI, вам просто нужно сделать:

BlockBlobURL my_blob = ... // your call to obtain the BlockBlobURL
URI blob_uri = blob.toURL().toURI();
0 голосов
/ 23 ноября 2018

Это, вероятно, вызвано различием версии sdk, для примера есть образец.

static void getBlob(BlockBlobURL blobURL, File sourceFile) {
    try {
        // Get the blob using the low-level download method in BlockBlobURL type
        // com.microsoft.rest.v2.util.FlowableUtil is a static class that contains helpers to work with Flowable
        blobURL.download(new BlobRange(0, Long.MAX_VALUE), null, false)
        .flatMapCompletable(response -> {
            AsynchronousFileChannel channel = AsynchronousFileChannel.open(Paths
                .get(sourceFile.getPath()), StandardOpenOption.CREATE,  StandardOpenOption.WRITE);
                    return FlowableUtil.writeFile(response.body(), channel);
        }).doOnComplete(()-> System.out.println("The blob was downloaded to " + sourceFile.getAbsolutePath()))
        // To call it synchronously add .blockingAwait()
        .subscribe();
    } catch (Exception ex){
    System.out.println(ex.toString());
    }
}

Вы можете щелкнуть эту ссылку , чтобы проверить ее подробно,надеюсь, что это принесет пользу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...