前言

最近有需求需要下载文件,可能是image的图片,也可能是pdf报告,也可能是微软的word或者excel文件。

这里就整理了asp.net mvc 和asp.net webapi 下载的方法

ASP.NET MVC 下载

在mvc中,control的returnresult有FileResult,描述如下:

System.Web.Mvc.FileResult
System.Web.Mvc.FileContentResult
System.Web.Mvc.FilePathResult
System.Web.Mvc.FileStreamResult

下载的时候,因为要根据文件来设置其MimiType,如果是NET 4.5则可能使用一下代码:

MimeMapping.GetMimeMapping(fileName)

准备完毕只好,一下就是controller下载的方法:

public FileResult MyFile()
{
string root = Server.MapPath("~/App_Data");
string fileName = "test.jpg";
string filePath = Path.Combine(root, fileName);
string s= MimeMapping.GetMimeMapping(fileName); return File(filePath, s, Path.GetFileName(filePath));
}

asp.net webapi 下载

webapi的下载和mvc不太一样,webapi需要设置返回的header等一系列属性:

[HttpGet]
public HttpResponseMessage Get(string name)
{
var root = System.Web.HttpContext.Current.Server.MapPath("~/App_Data");
string fileName = name;
string path = Path.Combine(root, fileName);
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new FileStream(path, FileMode.Open);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentDisposition.FileName = fileName;
//result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentType = new MediaTypeHeaderValue(MimeMapping.GetMimeMapping(fileName));
result.Content.Headers.ContentLength = stream.Length;
return result;
}

总结

以上就是下载的一些个人总结。参考资料如下:

https://stackoverflow.com/questions/3604562/download-file-of-any-type-in-asp-net-mvc-using-fileresult

https://stackoverflow.com/questions/26038856/how-to-return-a-file-filecontentresult-in-asp-net-webapi

Asp.net mvc 下载文件的更多相关文章

  1. asp.net mvc 下载文件 txt doc xsl 等等

      不废话,直接上代码,就是这么简单 public FileStreamResult StreamFileFromDisk() { // string path = AppDomain.Current ...

  2. Asp.net mvc 大文件上传 断点续传

    Asp.net mvc 大文件上传 断点续传 进度条   概述 项目中需要一个上传200M-500M的文件大小的功能,需要断点续传.上传性能稳定.突破asp.net上传限制.一开始看到51CTO上的这 ...

  3. MVC下载文件方式

    MVC下载文件方式 http://www.cnblogs.com/liang--liang/archive/2012/10/20/2732745.html 方式一: public FileStream ...

  4. mvc下载文件

    MVC下载文件方式 方式一: public FileStreamResult DownFile(string filePath, string fileName)  {       string ab ...

  5. MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器

    MVC图片上传.浏览.删除   1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...

  6. asp.net mvc5 下载文件方法

    控制器自带的 FileContentResult 可以让我们很方便的返回文件到服务端,减少了很多步骤.用于下载文件的时候,像视频.文本.图片这种浏览器支持的文件,默认就会被浏览器打开.这时候想让它变成 ...

  7. MVC下载文件方式 包括网络地址文件

    MVC下载文件方式 方式一: public FileStreamResult DownFile(string filePath, string fileName){      string absol ...

  8. Asp.net MVC 处理文件的上传下载

    如果你仅仅只有Asp.net Web Forms背景转而学习Asp.net MVC的,我想你的第一个经历或许是那些曾经让你的编程变得愉悦无比的服务端控件都驾鹤西去了.FileUpload就是其中一个, ...

  9. 利用Asp.net MVC处理文件的上传下载

    如果你仅仅只有Asp.net Web Forms背景转而学习Asp.net MVC的,我想你的第一个经历或许是那些曾经让你的编程变得愉悦无比的服务端控件都驾鹤西去了.FileUpload就是其中一个, ...

随机推荐

  1. BZOJ 1192: [HNOI2006]鬼谷子的钱袋(新生必做的水题)

    1192: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3557  Solved: 2596[Submit][St ...

  2. 搬寝室(经典dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1421 hdu_1421:搬寝室 Time Limit: 2000/1000 MS (Java/Othe ...

  3. Parade(单调队列优化dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2490 Parade Time Limit: 4000/2000 MS (Java/Others)    ...

  4. linux命令 uname -r 和 uname -a 的解释与演示

    1.uname -r : 显示操作系统的发行版号2.uname -a :显示系统名.节点名称.操作系统的发行版号.内核版本等等. 系统名:Linux 节点名称: iZ2zeeailqvwws5dcui ...

  5. angular $stateProvider 路由的使用

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. SQL的case when then else end语句的用法

    SELECT a.managecom, a.subtype, count(*) loadsucc, sum(case when a.state in  ('4', '5', '6', '7', '8' ...

  7. 安装Ubuntu16.04失败

    原本安装的是Ubuntu14,但是在使用caffe时总是出错,所以干脆将Ubuntu从14升级到16,结果整出一堆麻烦.在解决这些麻烦的过程也学习了不少系统启动的细节.印证了那句话"如何没有 ...

  8. MySQL的Illegal mix of collationsy异常原因和解决方法

    原创 2008年12月25日 11:54:00 标签: mysql / collation / character / variables / database / server   今天在使用数据库 ...

  9. Python3 的函数(2)

    1.形参和实参 def MyFun(x): return x ** 3 y = 3 print(MyFun(y)) x为形参,y为实参. 2.函数文档 在函数内用单引号引起来的一段文字,在调用函数时不 ...

  10. 遇到安装app不识别的情况

    一般->blokfile->证书设定设置