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

关于Azure File Storage与SAS的咨询:无账户密钥实现文件上传

嘿,完全理解你的疑惑——SAS的核心价值确实就是让你不用暴露账户密钥就能授权访问Azure存储资源!你完全没必要非得通过带账户密钥的连接字符串来创建CloudStorageAccount,直接用有效的SAS URI就能完成文件上传操作。下面给你具体的代码示例,分两种常用开发语言展示:

C# 示例(使用最新Azure.Storage.Files.Shares SDK)

首先确保你安装了官方的NuGet包:Azure.Storage.Files.Shares

using Azure.Storage.Files.Shares;
using System.IO;

// 异步上传文件方法
async Task UploadFileToAzureFileStorageWithSAS(string sasUri, string localFilePath, string targetFileName)
{
    // 直接用SAS URI初始化ShareClient,无需账户密钥
    ShareClient shareClient = new ShareClient(new Uri(sasUri));

    // 可选:指定存储文件的目录,若目录不存在则自动创建
    ShareDirectoryClient targetDirectory = shareClient.GetDirectoryClient("uploaded-files");
    await targetDirectory.CreateIfNotExistsAsync();

    // 获取目标文件的客户端实例
    ShareFileClient fileClient = targetDirectory.GetFileClient(targetFileName);

    // 读取本地文件并上传到Azure文件存储
    using FileStream localFileStream = File.OpenRead(localFilePath);
    await fileClient.UploadAsync(localFileStream, overwrite: true);
}

// 调用示例(替换成你的实际参数)
// await UploadFileToAzureFileStorageWithSAS(
//     "https://yourstorageaccount.file.core.windows.net/yourshare?sv=2022-11-02&ss=f&srt=sco&sp=rwdlacupi&se=2024-12-31T23:59:59Z&st=2024-01-01T00:00:00Z&spr=https&sig=xxxxxx",
//     @"C:\local-files\test.txt",
//     "uploaded-test.txt"
// );
Python 示例(使用azure-storage-file-share库)

先安装Python包:pip install azure-storage-file-share

from azure.storage.fileshare import ShareFileClient

def upload_file_with_sas(sas_uri, local_file_path, target_file_path):
    # 通过SAS URI直接创建文件客户端
    file_client = ShareFileClient.from_share_url(
        sas_url=sas_uri,
        file_path=target_file_path
    )

    # 读取本地文件并上传
    with open(local_file_path, "rb") as local_file:
        file_client.upload_file(local_file)

# 调用示例(替换参数)
# upload_file_with_sas(
#     "https://yourstorageaccount.file.core.windows.net/yourshare?sv=2022-11-02&ss=f&srt=sco&sp=rwdlacupi&se=2024-12-31T23:59:59Z&st=2024-01-01T00:00:00Z&spr=https&sig=xxxxxx",
#     "./local-test.txt",
#     "uploaded-files/uploaded-test.txt"
# )

关键注意事项:

  • 你的SAS URI必须具备足够的权限:至少需要Create和Write权限(如果需要覆盖已有文件,还要确保权限包含Delete),同时要设置合理的有效期限。
  • 如果是前端浏览器上传场景,你可以使用Azure Storage的JavaScript SDK,核心逻辑一致:用SAS URI初始化文件客户端,然后通过浏览器的File API读取文件并上传。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:15:51