用C#生成一個下載服務器文件到本地文件夾的API接口
时间: 2024-02-01 09:02:01 浏览: 52
用C#语言从服务器下载文件
5星 · 资源好评率100%
好的,以下是一个使用 C# 生成的下载服务器文件到本地文件夹的 API 接口的示例代码:
```csharp
[HttpGet]
public HttpResponseMessage DownloadFile(string fileName, string localFilePath)
{
// 获取文件路径
string filePath = Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data/"), fileName);
// 检查文件是否存在
if (!File.Exists(filePath))
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, "文件不存在");
}
// 创建一个 HttpResponseMessage 对象
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
// 读取文件流
FileStream fileStream = new FileStream(filePath, FileMode.Open);
// 将文件流写入到 HttpResponseMessage 中
response.Content = new StreamContent(fileStream);
// 设置文件的 MIME 类型
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
// 设置文件名
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = fileName;
// 将文件流保存到本地文件夹
using (var fs = File.Create(localFilePath))
{
fileStream.Seek(0, SeekOrigin.Begin);
fileStream.CopyTo(fs);
}
return response;
}
```
这个接口使用了 HTTP GET 请求,并接受两个参数:`fileName` 和 `localFilePath`,分别用于指定要下载的文件名和本地文件夹的路径。它的实现过程如下:
1. 获取文件路径。
2. 检查文件是否存在,如果不存在则返回一个 HTTP 404 错误。
3. 创建一个 HttpResponseMessage 对象,用于构建 HTTP 响应。
4. 读取文件流,并将文件流写入到 HttpResponseMessage 对象中。
5. 设置文件的 MIME 类型为 `application/octet-stream`。
6. 设置文件名为要下载的文件名。
7. 将文件流保存到本地文件夹中。
你可以根据自己的需求修改代码中的路径和文件类型。请注意,这个接口的实现中,下载的文件会被保存到本地文件夹中,如果本地文件夹不存在,需要先创建文件夹。
阅读全文