C# response 以文件路径响应文件
时间: 2023-09-13 08:05:44 浏览: 182
你可以使用 ASP.NET Web API 来创建一个 Web 服务,读取指定路径的文件内容并将其作为文件下载响应返回给客户端。
以下是一个简单的示例代码:
```csharp
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Web.Http;
public class FileController : ApiController
{
[HttpGet]
public HttpResponseMessage DownloadFile(string filePath)
{
try
{
// 检查文件是否存在
if (!File.Exists(filePath))
{
var response = new HttpResponseMessage(HttpStatusCode.NotFound);
response.Content = new StringContent("文件不存在:" + filePath);
return response;
}
// 读取文件内容
byte[] fileBytes = File.ReadAllBytes(filePath);
// 创建 HTTP 响应
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new ByteArrayContent(fileBytes);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = Path.GetFileName(filePath);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
return response;
}
catch (Exception e)
{
// 创建 HTTP 错误响应
var response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
response.Content = new StringContent("读取文件失败:" + e.Message);
return response;
}
}
}
```
你需要在 Web 服务中注册该控制器,并启动 Web 服务。然后,你可以通过发送 GET 请求到 `/api/file?filePath=C:\example.txt` 来下载文件。如果文件读取成功,将返回 HTTP 200 OK 响应,并包含文件内容。如果文件不存在,将返回 HTTP 404 Not Found 响应,并包含错误消息。如果文件读取失败,将返回 HTTP 500 Internal Server Error 响应,并包含错误消息。另外,该代码还会设置响应头,以便浏览器能够正确地将文件下载到本地。