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

如何在Azure File Share中无需提前知晓大小流式上传文件?

无需提前知晓流大小的Azure文件共享流式上传方法

你遇到的问题是因为CreateAsync方法必须预先知道文件大小,而部分流(如网络流、动态生成的流)不支持Length属性,导致调用报错。以下是两种无需提前获取流长度的替代方案:

方案一:直接使用UploadAsync重载

无需预先调用CreateAsync,UploadAsync的部分重载支持直接上传未知长度的流,内部会自动完成文件创建和上传流程:

private async Task UploadStreamAsync(Stream stream, CancellationToken token = default)
{
    ShareFileClient client = GetShareFileClient();
    // overwrite参数控制是否覆盖已存在的文件,根据业务需求调整
    await client.UploadAsync(stream, overwrite: true, cancellationToken: token);
}

方案二:使用OpenWriteAsync获取可写流

通过OpenWriteAsync获取Azure文件的可写流,再将源流复制到该可写流中,这种方式更灵活,适合需要自定义缓冲区或分块逻辑的场景:

private async Task UploadStreamAsync(Stream stream, CancellationToken token = default)
{
    ShareFileClient client = GetShareFileClient();
    using var azureWriteStream = await client.OpenWriteAsync(overwrite: true, cancellationToken: token);
    // 81920为缓冲区大小,可根据流的类型和性能需求调整
    await stream.CopyToAsync(azureWriteStream, 81920, token);
}

这两种方案都不需要依赖流的Length属性,能完美适配不支持该属性的流场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:02:35