c#在.net框架下写一个下载大文件的api接口 不使用using Microsoft.AspNetCore.Mvc;
时间: 2024-10-22 17:17:00 浏览: 28
在.NET框架下,特别是没有`Microsoft.AspNetCore.Mvc`的情况下,我们可以创建一个简单的API接口来处理文件下载。这里我们假设你正在使用基础的ASP.NET Core Web API。首先,你需要设置HTTP响应头来表示这是一个下载操作,并提供一个POST请求来接收文件地址。
```csharp
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
namespace YourNamespace.Controllers // 请替换为你项目的实际命名空间
{
public class DownloadController : ControllerBase // 控制器继承自ApiController
{
[HttpPost("download")]
public async Task<IActionResult> DownloadFile([FromBody] string filePath)
{
if (string.IsNullOrEmpty(filePath))
{
return BadRequest("Please provide a valid file path.");
}
try
{
var httpClient = new HttpClient();
HttpResponseMessage response = await httpClient.GetAsync(filePath);
if (!response.IsSuccessStatusCode)
{
return StatusCode(response.StatusCode, "Failed to download file.");
}
var fileName = Path.GetFileName(filePath);
var memoryStream = new MemoryStream();
await response.Content.CopyToAsync(memoryStream);
// 设置响应头,告诉浏览器这是下载
Response.Headers.Add("Content-Disposition", $"attachment; filename={fileName}");
Response.ContentType = response.Content.Headers.ContentType.MediaType;
return File(memoryStream.ToArray(), Response.ContentType);
}
catch (Exception ex)
{
return StatusCode(500, "An error occurred while downloading the file: " + ex.Message);
}
}
}
}
```
在这个示例中,用户通过发送一个包含文件路径的POST请求到`/download`端点,API会尝试从该URL获取文件内容并将其作为附件返回给客户端。如果请求失败,将返回错误状态码和消息。
阅读全文