有一个服务器配置了nginx,编写一个asp.net mvc代码实现从服务器路径下取文件,不使用httpclient
时间: 2024-12-22 15:24:35 浏览: 8
在ASP.NET MVC中,如果你想要从服务器路径下获取文件而不想使用HttpClient,你可以利用System.IO命名空间中的File类。这里是一个基本示例,假设服务器路径是相对路径:
```csharp
using System.IO;
public ActionResult DownloadFile(string filePath)
{
// 检查路径是否有效
if (!Directory.Exists(Server.MapPath(filePath)))
{
return HttpNotFound(); // 如果文件不存在,返回404错误
}
// 获取完整的物理路径
string absolutePath = Path.Combine(Server.MapPath("~/"), filePath);
// 设置HTTP响应头信息,模拟下载
Response.AddHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(absolutePath));
Response.ContentType = MimeMapping.GetMimeMapping(Path.GetExtension(absolutePath));
// 使用FileStream读取文件并发送
using (FileStream fileStream = new FileStream(absolutePath, FileMode.Open))
{
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
Response.OutputStream.Write(buffer, 0, bytesRead);
}
}
// 返回结果并关闭流
return File(absolutePath, Response.ContentType); // 或者直接返回FileResult
}
```
这个Action会处理GET请求,接收服务器文件路径作为查询参数,然后将文件内容返回给客户端,模拟下载。
阅读全文