ASP.NET MVC 下载文件

如何从 MVC 控制器(.NET Framework)下载文件。

使用 从 ASP.NET MVC 中的控制器下载任何文件类型FileStreamResult。注意:如果使用ASP.NET Core,请参阅此页面,如果想要将文件上传到服务器,请参阅此页面

// download a zip file as an attachment

public FileStreamResult DownloadZipFile()

{

string path = Server.MapPath("/files/somefile.zip");

if (System.IO.File.Exists(path))

{

Response.AppendHeader("content-disposition", "attachment;filename=somefile.zip");

System.IO.FileStream stream = new System.IO.FileStream(path, System.IO.FileMode.Open); // don't use using keyword!

return new FileStreamResult(stream, "application/x-zip-compressed"); // the constructor will fire Dispose() when done

}

else

return null;

}

// download a jpeg as an attachment

public FileStreamResult DownloadJpegFile()

{

string path = Server.MapPath("/files/someimage.jpg");

if (System.IO.File.Exists(path))

{

Response.AppendHeader("content-disposition", "attachment;filename=someimage.jpg");

System.IO.FileStream stream = new System.IO.FileStream(path, System.IO.FileMode.Open); // don't use using keyword!

return new FileStreamResult(stream, "image/jpeg"); // the constructor will fire Dispose() when done

}

else

return null;

}

// download a text file as an attachment

public FileStreamResult DownloadTextFile()

{

string path = Server.MapPath("/files/somefile.txt");

if (System.IO.File.Exists(path))

{

Response.AppendHeader("content-disposition", "attachment;filename=somefile.txt");

System.IO.FileStream stream = new System.IO.FileStream(path, System.IO.FileMode.Open); // don't use using keyword!

return new FileStreamResult(stream, "text/plain"); // the constructor will fire Dispose() when done

}

else

return null;

}

FileContentResult从使用字节数组的 ASP.NET MVC 控制器下载任何数据类型。

public FileContentResult DownloadTextFile()

{

byte[] bytes = System.Text.Encoding.ASCII.GetBytes("How now brown cow.");

Response.AppendHeader("content-disposition", "attachment;filename=sometext.txt");

return new FileContentResult(bytes, "text/plain");

}

或者使用FileStream来填充字节数组。

public FileContentResult DownloadTextFile()

{

System.IO.FileStream stream = new System.IO.FileStream("somefile.txt", System.IO.FileMode.Open);

byte[] bytes = new byte[stream.Length];

stream.Read(bytes, 0, bytes.Length);

Response.AppendHeader("content-disposition", "attachment;filename=somefile.txt");

return new FileContentResult(bytes, "text/plain");

}

或者简单来说:

public FileContentResult DownloadTextFile()

{

byte[] bytes = System.IO.File.ReadAllBytes("somefile.txt");

Response.AppendHeader("content-disposition", "attachment;filename=somefile.txt");

return new FileContentResult(bytes, "text/plain");

}

下载自MemoryStream

public FileContentResult DownloadFromMemoryStream()

{

using(System.IO.MemoryStream ms = new System.IO.MemoryStream())

{

ms.WriteByte((byte)'a');

ms.WriteByte((byte)'b');

ms.WriteByte((byte)'c');

byte[] bytes = ms.ToArray();

Response.AppendHeader("content-disposition", "attachment;filename=somefile.txt");

return new FileContentResult(bytes, "text/plain");

}

}

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

相关推荐
Cyan_RA91 天前
SpringMVC 请求数据绑定与参数映射 详解
java·后端·spring·mvc·springmvc·映射请求数据
William_cl2 天前
【C#/.NET 进阶】ASP.NET 架构与最佳实践:DI 依赖注入(IoC 核心)从入门到避坑
c#·asp.net·.net
Cyan_RA93 天前
SpringMVC REST 详解
java·spring·mvc·springmvc·restful·jquery·jsp
budingxiaomoli6 天前
Spring Web MVC 知识总结
spring·mvc
虾米Life7 天前
MVC与MVVM 架构
架构·mvc·mvvm
医疗信息化王工9 天前
基于ASP.NET Core的医院不良事件管理系统的架构设计
后端·asp.net
笛卡尔的心跳9 天前
Spring MVC 注解
java·spring·mvc
小松加哲10 天前
Spring MVC 核心原理全解析
java·spring·mvc
那个失眠的夜10 天前
RESTful 语法规范 核心注解详解
java·spring·mvc·mybatis
羌俊恩10 天前
Centos环境django项目部署过程
django·flask·centos·mvc·mtv·web项目框架