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

如何使用Kotlin将.png文件上传至Azure Blob Storage

依赖配置

首先需要在项目中引入Azure Blob Storage官方SDK,不同构建工具配置如下:

  • Gradle(Kotlin DSL),在build.gradle.kts中添加依赖:
dependencies {
    implementation("com.azure:azure-storage-blob:12.25.1") // 可替换为最新稳定版
}
  • Maven,在pom.xml中添加依赖:
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <version>12.25.1</version>
</dependency>
Kotlin上传代码示例

以下是可直接运行的完整示例,替换对应参数即可使用:

import com.azure.storage.blob.BlobServiceClientBuilder
import java.io.File

fun batchUploadPngToBlob(
    // 存储账户连接字符串,可在Azure门户存储账户的「访问密钥」页面获取
    connectionString: String,
    // 你已经创建好的容器名称
    containerName: String,
    // 本地待上传的png文件路径列表
    localPngPaths: List<String>
) {
    // 初始化Blob服务客户端
    val blobServiceClient = BlobServiceClientBuilder()
        .connectionString(connectionString)
        .buildClient()

    // 获取容器客户端,如果容器不存在会自动创建,已经存在的话也无副作用
    val containerClient = blobServiceClient.getBlobContainerClient(containerName)
    containerClient.createIfNotExists()

    localPngPaths.forEach { path ->
        val localFile = File(path)
        // 校验文件有效性:文件存在且是png格式
        if (!localFile.exists() || !localFile.extension.equals("png", ignoreCase = true)) {
            println("跳过无效文件:$path")
            return@forEach
        }
        // 以本地文件名作为Blob存储的文件名,也可自定义前缀/路径实现目录分类
        val blobClient = containerClient.getBlobClient(localFile.name)
        // 第二个参数传true代表如果Blob已存在则覆盖,不需要覆盖可以先调用exists()判断
        blobClient.uploadFromFile(path, true)
        println("文件 ${localFile.name} 上传完成")
    }
}

// 调用示例
fun main() {
    val myConnectionString = "替换为你的存储账户连接字符串"
    val myContainerName = "替换为你的容器名"
    val toUploadPngs = listOf(
        "/本地路径/图片1.png",
        "/本地路径/图片2.png",
        "/本地路径/图片3.png"
    )

    batchUploadPngToBlob(myConnectionString, myContainerName, toUploadPngs)
}
注意事项
  • 生产环境不要硬编码连接字符串,建议通过环境变量、配置中心或者云密钥管理服务存储敏感信息
  • 大体积png文件可以调用uploadFromFile的重载方法,传入ParallelTransferOptions配置并行块大小、并发数提升上传效率
  • 可以自行添加try-catch捕获上传异常,对失败的文件做重试、日志记录处理
  • 如果需要自定义Blob的访问权限、元信息、Content-Type等属性,可以传入BlobUploadFromFileOptions参数做自定义配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:18:03