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");

}

}

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

相关推荐
超級二蓋茨5 小时前
asp.net core中JwtBearerEvents中几个事件的生命周期
java·服务器·asp.net
William_cl8 小时前
第 1 节:MVC + DataTable 百万数据秒加载 —— 企业级服务端分页实战
mvc·状态模式
ze^01 天前
Day01 Web应用&架构搭建&域名源码&站库分离&MVC模型&解析受限&对应路径
安全·web安全·架构·mvc·安全架构
身如柳絮随风扬1 天前
MVC 三层结构深度解析:概念、作用与实战经验
mvc
编码者卢布2 天前
【Azure Developer】ASP.NET Framework 4.8 集成 Azure Application Insights SDK 完整指南
microsoft·asp.net·azure
祀爱2 天前
定时任务之BackgroundService的详细教程
后端·c#·asp.net
Cyan_RA92 天前
SpringMVC 数据格式化处理 详解
java·开发语言·spring·mvc·ssm·springmvc·数据格式化
bbq粉刷匠3 天前
Spring--MVC入门
mvc
祀爱3 天前
Asp.net core+ Layui 项目中编辑按钮传递数据的方法
前端·c#·asp.net·layui
YOU OU3 天前
Spring Web MVC 入门
spring·mvc