You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java获取Azure Blob存储中已上传文件的Blob URL

用Java获取Azure Blob文件的URL(基于ConnectionString)

嘿,这事儿挺简单的,我给你分两种常见场景来讲解——毕竟Blob容器的访问权限不同,获取URL的方式也略有区别:

1. 场景一:容器设置了公共访问权限

如果你的Blob容器是公共读或者完全公开的,那直接获取Blob的原始URL就行,代码如下:

首先得确保你的项目里引入了Azure Storage Blob的SDK,Maven项目的话,在pom.xml里加这个依赖:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <version>12.25.0</version> <!-- 用最新稳定版即可 -->
</dependency>

然后写核心代码:

import com.azure.storage.blob.BlobClient;
import com.azure.storage.blob.BlobContainerClient;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;

public class GetBlobUrlExample {
    public static void main(String[] args) {
        // 替换成你的实际配置
        String connectionString = "你的Azure Blob连接字符串";
        String containerName = "目标容器名称";
        String blobName = "已上传的文件名";

        // 1. 创建Blob服务客户端
        BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
                .connectionString(connectionString)
                .build();

        // 2. 获取容器客户端
        BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);

        // 3. 获取Blob客户端
        BlobClient blobClient = containerClient.getBlobClient(blobName);

        // 4. 获取Blob的公共可访问URL
        String blobUrl = blobClient.getBlobUrl();
        System.out.println("Blob的公共URL:" + blobUrl);
    }
}

这段代码会直接返回Blob的可访问URL,只要容器是公共的,拿到就能直接用。

2. 场景二:容器是私有访问(默认情况)

Azure Blob容器默认是私有权限,直接拿到的URL无法访问,这时候需要生成SAS(共享访问签名)URL——这是带临时权限的访问链接,你可以控制它的有效期和操作权限。

核心代码在上面的基础上扩展:

import com.azure.storage.blob.BlobClient;
import com.azure.storage.blob.BlobContainerClient;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;
import com.azure.storage.blob.sas.BlobSasPermission;
import com.azure.storage.blob.sas.BlobServiceSasSignatureValues;

import java.time.OffsetDateTime;

public class GetBlobSasUrlExample {
    public static void main(String[] args) {
        // 替换成你的实际配置
        String connectionString = "你的Azure Blob连接字符串";
        String containerName = "目标容器名称";
        String blobName = "已上传的文件名";

        BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
                .connectionString(connectionString)
                .build();

        BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);
        BlobClient blobClient = containerClient.getBlobClient(blobName);

        // 配置SAS权限:这里设为只读,你也可以改成读写、删除等
        BlobSasPermission sasPermission = new BlobSasPermission().setReadPermission(true);
        // 设置SAS过期时间:比如1小时后失效
        OffsetDateTime expiryTime = OffsetDateTime.now().plusHours(1);

        // 生成SAS令牌
        String sasToken = blobClient.generateBlobSas(new BlobServiceSasSignatureValues(expiryTime, sasPermission));

        // 拼接成可访问的SAS URL
        String sasUrl = blobClient.getBlobUrl() + "?" + sasToken;
        System.out.println("带SAS权限的Blob URL:" + sasUrl);
    }
}

这个SAS URL在过期前可以正常访问私有Blob,你可以根据需求灵活调整权限和过期时长。

小提醒

  • 记得把代码里的占位符替换成你自己的实际值
  • SDK版本尽量用最新稳定版,避免兼容性问题

内容的提问来源于stack exchange,提问作者Muhammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:16:16