在.net4.5框架下使用c#下载大文件的webapi接口示例
时间: 2024-10-22 20:16:22 浏览: 31
在.NET Framework 4.5中,使用C#创建一个Web API接口来下载大文件通常涉及到分块传输和提供流式响应。下面是一个简单的示例:
首先,创建一个`FileController`控制器类:
```csharp
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace YourNamespace.Controllers
{
[Route("api/[controller]")]
public class FileController : ControllerBase
{
[HttpGet("{filename}")]
public async Task<IActionResult> Download(string filename)
{
// 检查文件是否存在并有权限访问
string filePath = "YourFilePath/" + filename; // 替换为实际文件路径
if (!System.IO.File.Exists(filePath))
return NotFound();
// 获取文件大小
long fileSize = System.IO.FileInfo.FromFileName(filePath).Length;
// 分块读取和返回
var buffer = new byte[4096]; // 可调整块大小
using (var fileStream = System.IO.File.OpenRead(filePath))
{
Response.Headers.Add("Content-Disposition", $"attachment; filename={Path.GetFileName(filename)}");
Response.Headers.Add("Content-Length", fileSize.ToString());
await fileStream.CopyToAsync(Response.Body, buffer.Length);
}
return Ok();
}
}
}
```
在这个示例里,当用户请求 `/api/file/{filename}`(其中 `{filename}` 是你要下载的文件名)时,API 将读取指定文件,并分块逐块地通过HTTP响应发送给客户端。
阅读全文