Путь к изображению файла Azure с использованием Java - PullRequest
0 голосов
/ 27 января 2019

Привет! Я пытаюсь сохранить изображение в хранилище Azure, у меня уже есть шаг настройки, и у меня есть метод загрузки

AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(sourceFile.toPath());
    TransferManager.uploadFileToBlockBlob(fileChannel, blob, 8 * 1024 * 1024, null).subscribe(response -> {
        System.out.println("Completed upload request.");
        System.out.println(response.response().statusCode());

    });

Как мне получить путь к изображению URL в Azure, чтобы сохранить его в базе данных и показатьэто на моем сайте?

1 Ответ

0 голосов
/ 28 января 2019

Как сказал @GauravMantri, вы можете получить URL-адрес блоба через blob.toURL().Затем, если контейнер большого двоичного объекта является общедоступным (установить общедоступный уровень доступа) и свойство ContentType большого двоичного объекта установлено правильно, например image/png, вы можете получить прямой доступ к изображению через URL-адрес, например использовать вimg тег для отображения на веб-странице ниже.

<img src="myaccountname.blob.core.windows.net/test/testURL">

Однако, учитывая безопасный доступ, для контейнера установлен уровень частного доступа, см. Официальные документы Secure access to an application's data in the cloud и Using shared access signatures (SAS).Затем нам нужно сгенерировать URL-адрес блоба с подписью SAS для доступа.

Вот пример кода для создания URL-адреса BLOB-объекта с подписью SAS.

SharedKeyCredentials credentials = new SharedKeyCredentials(accountName, accountKey);
ServiceSASSignatureValues values = new ServiceSASSignatureValues()
                .withProtocol(SASProtocol.HTTPS_ONLY) // Users MUST use HTTPS (not HTTP).
                .withExpiryTime(OffsetDateTime.now().plusDays(2)) // 2 days before expiration.
                .withContainerName(containerName)
                .withBlobName(blobName);
BlobSASPermission permission = new BlobSASPermission()
                .withRead(true)
                .withAdd(true)
                .withWrite(true);
values.withPermissions(permission.toString());
SASQueryParameters serviceParams = values.generateSASQueryParameters(credentials);
String sasSign = serviceParams.encode();
String blobUrlWithSAS = String.format(Locale.ROOT, "https://%s.blob.core.windows.net/%s/%s%s",
                accountName, containerName, blobName, sasSign);

Вы также можете добавить подпись SAS в конце строки blob.toURL().

String blobUrlWithSAS = blob.toString()+sasSign;

О подписи SAS вы можете обратиться к этим образцам кодов в ServiceSASSignatureValues Class и AccountSASSignatureValues Class.

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