c#在.net框架下写一个下载大文件的api接口
时间: 2024-10-22 19:17:29 浏览: 30
在.NET框架下,使用C#编写一个下载大文件的API接口,通常会涉及到异步处理、流式传输以及错误处理。这里是一个简单的示例,展示如何创建一个HTTP RESTful API:
```csharp
using System;
using System.IO;
using System.Net.Http;
using Microsoft.AspNetCore.Mvc;
// 创建一个控制器
[ApiController]
public class DownloadController : ControllerBase
{
[HttpGet("download/{filename}")]
public async Task<IActionResult> DownloadFile(string filename)
{
// 检查文件是否存在并有读取权限
if (!System.IO.File.Exists($"YourServerPath/{filename}"))
{
return NotFound();
}
try
{
// 定义HTTP响应头,告诉浏览器这是一个下载请求
Response.Headers.Add("Content-Disposition", $"attachment; filename={filename}");
// 设置响应内容类型为二进制数据
Response.ContentType = "application/octet-stream";
// 使用FileStreamResult返回大文件流,并开启异步模式
using (var fileStream = File.OpenRead($"YourServerPath/{filename}"))
{
await fileStream.CopyToAsync(Response.Body);
}
}
catch (Exception ex)
{
// 记录错误日志
Console.WriteLine($"Error downloading file: {ex.Message}");
return StatusCode((int)HttpStatusCode.InternalServerError);
}
return Ok(); // 成功返回
}
}
```
在这个例子中,`YourServerPath`需要替换为实际的服务器文件存储路径。当客户端发送GET请求到 `/download/{filename}` URL,API将尝试从指定位置下载文件,并通过`FileStreamResult`以流的方式传递给客户端。
阅读全文