使用java的Azure文件图像路径

Posted

技术标签:

【中文标题】使用java的Azure文件图像路径【英文标题】:Azure file image path using java 【发布时间】:2019-06-20 13:26:55 【问题描述】:

您好我正在尝试将图像保存在 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 图片路径以将其保存在数据库中并显示在我的网站上?

【问题讨论】:

您能否编辑您的问题并在代码中包含您如何创建blob 对象?你可以尝试blob.toURL()方法来获取blob的URL。 @GauravMantri 在 blob.toURL() 之后;我得到“myaccountname.blob.core.windows.net/test/testURL”我怎样才能访问我的图像? 【参考方案1】:

正如@GauravMantri 所说,您可以通过blob.toURL() 获取blob 的URL。那么,如果blob的容器是public的(设置public访问级别),并且blob的ContentType属性设置正确,如image/png,就可以直接通过url访问图片,比如在一个img 标签显示在下面的网页中。

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

但是,考虑到安全访问,容器被设置为私有访问级别,请参考官方文档Secure access to an application's data in the cloudUsing shared access signatures (SAS)。然后,我们需要生成一个带有 SAS 签名的 blob url 用于访问。

这里是生成带有 SAS 签名的 blob url 的示例代码。

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);

您也可以在blob.toURL()字符串的末尾添加SAS签名。

String blobUrlWithSAS = blob.toString()+sasSign;

关于 SAS Signature,您可以参考ServiceSASSignatureValues ClassAccountSASSignatureValues Class 中的这些示例代码。

【讨论】:

以上是关于使用java的Azure文件图像路径的主要内容,如果未能解决你的问题,请参考以下文章

如何使用节点 js 检查“s3”/“azure”路径中是不是存在文件

Angular 应用程序能够访问 Microsoft Azure 中资产文件夹下的 json 文件

使用 pyspark 在 azure synapse studio 中获取文件的完整路径

将图像从Web APi [Azure Mobile APP]上载到Azure Web App中的文件夹

如何将特定于类的文件夹中的图像上传到 Azure ML Studio 上的 Azure Blob 存储

文件流来自Azure存储的blob