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

如何通过SAS认证实现iOS端图片直接上传至Azure File Share

实现方案(Azure Files iOS端SAS认证上传)

你正在使用的Azure存储iOS库本身就支持文件共享的操作,不需要更换依赖,以下是基于SAS认证的完整实现流程:

前置准备

  • 提前在Azure后台生成目标文件共享对应的SAS令牌,权限必须勾选「写入」,有效期根据业务需求设置,优先使用文件共享/子目录级别的SAS,不要使用存储账户全权限SAS
  • 确保SAS的允许IP范围包含iOS客户端的公网出口,或设置为允许所有IP访问,避免权限拦截

核心实现代码

1. 初始化SAS认证客户端

// 替换为你生成的SAS令牌,若生成的令牌前缀带?请手动去掉
let sasToken = "你的文件共享SAS令牌"
let storageCredentials = StorageCredentials(sasToken: sasToken)
// 替换为你的存储账户名称
let storageAccount = "你的存储账户名"
// 初始化文件服务客户端
let fileServiceClient = FileServiceClient(accountName: storageAccount, credentials: storageCredentials)

2. 配置上传参数

// 替换为目标文件共享名
let targetShareName = "你要上传的文件共享名称"
// 若上传到根目录则填空字符串,填子目录路径要确保目录已经提前创建
let targetDirPath = "目标子目录路径"
// 上传后保存的文件名,要带后缀
let saveFileName = "example.png"
// 加载本地待上传的图片
guard let uploadImage = UIImage(named: "本地图片资源名"),
      let uploadData = uploadImage.pngData() else {
    // 处理图片读取失败逻辑
    return
}

3. 执行上传操作

fileServiceClient.upload(
    data: uploadData,
    shareName: targetShareName,
    directoryPath: targetDirPath,
    fileName: saveFileName
) { result in
    switch result {
    case .success:
        // 上传成功后的业务逻辑
        print("文件上传完成")
    case .failure(let error):
        // 上传失败后的处理逻辑
        print("上传错误:\(error.localizedDescription)")
    }
}

注意事项

  • 如果上传的图片体积超过4MB,建议使用库提供的分块上传接口,避免单次请求超时
  • 不要把SAS令牌硬编码在客户端代码中,建议通过你的业务后端接口动态请求获取,降低令牌泄露风险
  • 上传前可以先调用目录存在性检查接口,避免目标目录不存在导致的上传失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:15:03