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

使用C#从Box公开URL下载每日更新XLS文件的实现求助

用C#从Box公开共享链接下载XLS文件

实现思路

Box公开共享链接默认会跳转至网页预览页,只需在链接后拼接?download=true参数即可触发直接下载,无需认证。以下是具体实现代码:

代码实现

using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

public class BoxFileDownloader
{
    /// <summary>
    /// 从Box公开共享链接下载XLS文件
    /// </summary>
    /// <param name="boxSharedUrl">Box公开共享链接</param>
    /// <param name="savePath">本地保存路径(含文件名)</param>
    public async Task DownloadXlsAsync(string boxSharedUrl, string savePath)
    {
        // 构造直接下载URL
        var downloadUrl = $"{boxSharedUrl}?download=true";

        using var httpClient = new HttpClient();
        // 发送请求并获取响应流(ResponseHeadersRead避免一次性加载大文件到内存)
        using var response = await httpClient.GetAsync(downloadUrl, HttpCompletionOption.ResponseHeadersRead);
        
        // 验证请求是否成功
        response.EnsureSuccessStatusCode();

        // 将文件流写入本地
        using var fileStream = new FileStream(savePath, FileMode.Create, FileAccess.Write);
        await response.Content.CopyToAsync(fileStream);
    }
}

调用示例

// 你的Box公开链接
var boxUrl = "https://samchully.box.com/v/Europe000000";
// 按日期命名保存文件,避免覆盖旧文件
var savePath = $"Europe_Update_{DateTime.Now:yyyyMMdd}.xlsx";

var downloader = new BoxFileDownloader();
await downloader.DownloadXlsAsync(boxUrl, savePath);

额外提示

  • 若需每日自动执行,可结合Windows任务计划、Hangfire等定时任务工具实现
  • 建议添加异常捕获逻辑(如HttpRequestException、IOException),处理网络故障、权限不足等场景
  • HttpCompletionOption.ResponseHeadersRead适用于大文件下载,可减少内存占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:55:46