一步步学习ASP.NET MVC3 (12)——FileResult
请注明转载地址:http://www.cnblogs.com/arhat
忙了两天,本来老魏昨天就应该写出新的文章,但是由于昨天雨夹雪而且加上昨天晚上加了班,到家都没饭吃了,一看时间都9点了,什么饭店都没有了,于是灰溜溜的就回家吃了包泡面,晚上老婆挺着大肚子还得伺候啊,所以时间就不允许了。今天老魏要补上一章了。
前面几章把ActionResult的子类讲的差不多了,今天应该是最后一个了FileResult。但是不幸的是FileResult也是个抽象类,其子类有FilePathResult,FileContentResult,FileStreamResult。不过基本上用法都一样,都是用来下载文件用的。
在Controller中提供了6个方法,分别返回的是上面三个子类。我们来看一下这六个方法的定义。
protected internal FileContentResult File(byte[] fileContents, string contentType); protected internal FileStreamResult File(Stream fileStream, string contentType); protected internal FilePathResult File(string fileName, string contentType); protected internal virtual FileContentResult File(byte[] fileContents, string contentType, string fileDownloadName); protected internal virtual FileStreamResult File(Stream fileStream, string contentType, string fileDownloadName); protected internal virtual FilePathResult File(string fileName, string contentType, string fileDownloadName);
下面,我们来测试一下这几个函数。同样的需要创建一个项目,同时在项目中创建一个文件夹为”File”,用来存放要下载的文件。

我们直接在HomeController的Index方法中测试这几个函数。
1,如果我们要在浏览器中需要直接显示文件(比如图片,文本文件),那么我们需要使用
protected internal FilePathResult File(string fileName, string contentType);
这个函数。
参数:
fileName:要显示的文件
contentTye:文件的MIME类型
我们更改一下代码:
public ActionResult Index()
{ return File("/File/1.jpg", "image/jpeg"); }
我们打开浏览器预览一下

那么我们会发现,浏览器并没有弹出下载对话框,而是直接显示到浏览器中了,同理,如果是txt文件,那么也会直接显示到浏览器中。
这里需要注意的地方是第二个参数contentType,这个是用来设置文件的MIME类型,那么大家可以从这里查看。
至于文本文件,大家可以测试一下,如果contentType是一些浏览器不能直接打开的文件,那么才会弹出下载对话框。
public ActionResult Index()
{ return File("/File/一步步学习ASP.NET MVC3 第八章.doc", "application/msword"); }

但是我们会发现,下载的时候没有文件名,那么这点是让人很不爽的。
此时,我们可以使用
protected internal virtual FilePathResult File(string fileName, string contentType, string fileDownloadName);
这个函数。第三个三处就是文件的下载名称。
public ActionResult Index()
{ return File("/File/一步步学习ASP.NET MVC3 第八章.doc", "application/msword", "一步步学习ASP.NET MVC3 第八章.doc"); }
结果如图:

至于其他的函数,只有第一个参数不同,只需要给出响应的参数就可以了。通过上面的函数定义我们会发现,第一个参数的类型就三个。
1,string fileName:文件的路径
2,Stream fileStream:以文件流的方式下载
3,byte[] filecontent:以字节的方式下载。
大家可以分别试试。好了,本章就基本上把ActionResult几个子类讲完了,那么大家可以多多练习一下。明天老魏继续写!
一步步学习ASP.NET MVC3 (12)——FileResult的更多相关文章
- 一步步学习ASP.NET MVC3 章节总结
请注明转载地址:http://www.cnblogs.com/arhat 对于<一步步学习ASP.NET MVC3>系列工15章,那么为了方便大家能够快速的预览,老魏在这里为这个系列提供一 ...
- 一步步学习ASP.NET MVC3 (1)——基础知识
请注明转载地址:http://www.cnblogs.com/arhat 首先在这里我想声明一下,这个ASP.NET MVC3系列是我在授课过程中的一些经验,有什么不对的地方,请大家指出,我们共同的学 ...
- 一步步学习ASP.NET MVC3 (3)——Razor(1)
请注明转载地址:http://www.cnblogs.com/arhat 首先这个<一步步学习ASP.NET MVC3>前段时间有些忙,没有顾得上写文章,昨天呢写了3个和ASP.NET的相 ...
- 一步步学习ASP.NET MVC3 (2)——入门程序
请注明转载地址:http://www.cnblogs.com/arhat 在上一节中,我们只是简单的介绍了什么是MVC及MVC的运行原理.而本节呢,主要来实现下一ASP.NET MVC3的开发流程,并 ...
- 一步步学习ASP.NET MVC3 (14)——Route路由
请注明转载地址:http://www.cnblogs.com/arhat 由于今天是星期六,所以多写几篇,感觉前几天的忙碌没有及时发布文章,趁着周末老魏尽力的多写几篇文章.因为本系列基本上快结束了,所 ...
- 一步步学习ASP.NET MVC3 (5)——View从Action中获得数据
请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,我们把Razor的模板技术给大家介绍了一下,当然模板中还有其他的知识点,这个以后我们还会继续讲解.本章我们主要讨论 ...
- 一步步学习ASP.NET MVC3 (6)——@helper,@functions
请注明转载地址:http://www.cnblogs.com/arhat 在前一章中,我们讲述了View如何从Action中获得数据,并显示出来,但随着需求的变化,我们可能要对View中显示的数据作出 ...
- 一步步学习ASP.NET MVC3 (7)——Controller,Action,ActionResult
请注明转载地址:http://www.cnblogs.com/arhat 前面几章我们讲解的都是关于View方面的知识,虽然还有很多关于View的知识没有讲,但是没关系,我们在后面使用到的时候在讲解, ...
- 一步步学习ASP.NET MVC3 (13)——HTML辅助方法
请注明转载地址:http://www.cnblogs.com/arhat 今天老魏是在十分郁闷,我的一个U盘丢了,心疼里面的资料啊,全部是老魏辛辛苦苦积攒的Linux资料,太心疼,到现在心情还不是很爽 ...
随机推荐
- 根据ip地址从第三方接口获取详细的地理位置
最近项目某个功能需要根据ip地址从第三方接口获取详细的地理位置,从网上找了很多例子,主要接口有新浪的,淘宝的,腾讯的.试了淘宝的,如果是数量级小的还可以,如果数量级达到上十万级就速度慢了,会导致系统崩 ...
- Azure CLI (一)如何安装和配置Azure CLI
什么是Azure CLI 快速安装 Azure 命令行界面 (Azure CLI),以便使用一组基于 shell 的开源命令在 Azure 中创建和管理资源. 步骤 1:安装 . 登录https:// ...
- c数组和指针的理解
#include<stdio.h> int main(void) { ,,,,}; ); printf(,*(p-)); // ] = &a; √ // ] = a; × // ] ...
- SpringAOP的注解方式
AOP(注解)[理解][应用][重点] 1.AOP注解配置流程 A.开启AOP配置支持注解@aspectj 核心配置文件中添加以下配置,功能等同于注解配置Bean的自动扫描路径 <aop:asp ...
- Oracle报错:ORA-01747: user.table.column, table.column 或列说明无效
1.检查sql书写正确性 2.如果sql书写正确,则是由于数据库列名起的不好引起的,名字用到了数据库的关键字. 如果列很多,又不好确定是哪个列名使用了关键字,以下建议可供参考: 我用以下方法定位 se ...
- 递归法绑定文件夹到导航树&在指定文件夹下新建文件夹
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString[&q ...
- PHP 实现对象的持久层,数据库使用MySQL
http://www.xuebuyuan.com/1236808.html 心血来潮,做了一下PHP的对象到数据库的简单持久层. 不常用PHP,对PHP也不熟,关于PHP反射的大部分内容都是现学的. ...
- 正则化—Java中Split函数的用法技巧_(转载修改)
原文地址:http://www.cnblogs.com/liubiqu/archive/2008/08/14/1267867.html java.lang.string.split split 方法 ...
- javascript Date类型 学习笔记
1 创建一个新的日期对象,如果不带参数,则对象自动获得当前的日期和时间 var d = new Date() 2 如果需要指定特定的日期,则可以通过Date.parse() 或者 Date().UTC ...
- myeclipse-8.6.0下载
myeclipse老版本不分32位和64位,欢迎大家下载使用! 链接:http://pan.baidu.com/s/1dEJCxcl 密码:z1ga