用java Azure的文件图像路径(Azure file image path using jav

2019-10-28 12:37发布

你好我想,以节省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());

    });

我怎样才能在Azure上的URL图像路径将其保存在数据库中,并显示在我的网站?

Answer 1:

作为@GauravMantri说,你可以通过获得一个blob的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) 然后,我们需要生成SAS签名BLOB URL访问。

下面是示例代码来生成与SAS签名BLOB网址。

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 ClassAccountSASSignatureValues Class



文章来源: Azure file image path using java