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

