如何使用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
相关产品推荐
相关产品推荐

