请注明转载地址:http://www.cnblogs.com/arhat

忙了两天,本来老魏昨天就应该写出新的文章,但是由于昨天雨夹雪而且加上昨天晚上加了班,到家都没饭吃了,一看时间都9点了,什么饭店都没有了,于是灰溜溜的就回家吃了包泡面,晚上老婆挺着大肚子还得伺候啊,所以时间就不允许了。今天老魏要补上一章了。

前面几章把ActionResult的子类讲的差不多了,今天应该是最后一个了FileResult。但是不幸的是FileResult也是个抽象类,其子类有FilePathResult,FileContentResult,FileStreamResult。不过基本上用法都一样,都是用来下载文件用的。

在Controller中提供了6个方法,分别返回的是上面三个子类。我们来看一下这六个方法的定义。

  1. protected internal FileContentResult File(byte[] fileContents, string contentType);
  2.  
  3. protected internal FileStreamResult File(Stream fileStream, string contentType);
  4.  
  5. protected internal FilePathResult File(string fileName, string contentType);
  6.  
  7. protected internal virtual FileContentResult File(byte[] fileContents, string contentType, string fileDownloadName);
  8.  
  9. protected internal virtual FileStreamResult File(Stream fileStream, string contentType, string fileDownloadName);
  10.  
  11. protected internal virtual FilePathResult File(string fileName, string contentType, string fileDownloadName);

下面,我们来测试一下这几个函数。同样的需要创建一个项目,同时在项目中创建一个文件夹为”File”,用来存放要下载的文件。

我们直接在HomeController的Index方法中测试这几个函数。

1,如果我们要在浏览器中需要直接显示文件(比如图片,文本文件),那么我们需要使用

  1. protected internal FilePathResult File(string fileName, string contentType);

这个函数。

参数:

fileName:要显示的文件

contentTye:文件的MIME类型

我们更改一下代码:

  1. public ActionResult Index()
  2. {
  3.  
  4. return File("/File/1.jpg", "image/jpeg");
  5.  
  6. }

我们打开浏览器预览一下

那么我们会发现,浏览器并没有弹出下载对话框,而是直接显示到浏览器中了,同理,如果是txt文件,那么也会直接显示到浏览器中。

这里需要注意的地方是第二个参数contentType,这个是用来设置文件的MIME类型,那么大家可以从这里查看

至于文本文件,大家可以测试一下,如果contentType是一些浏览器不能直接打开的文件,那么才会弹出下载对话框。

  1. public ActionResult Index()
  2. {
  3.  
  4. return File("/File/一步步学习ASP.NET MVC3 第八章.doc", "application/msword");
  5.  
  6. }

但是我们会发现,下载的时候没有文件名,那么这点是让人很不爽的。

此时,我们可以使用

  1. protected internal virtual FilePathResult File(string fileName, string contentType, string fileDownloadName);

这个函数。第三个三处就是文件的下载名称。

  1. public ActionResult Index()
  2. {
  3.  
  4. return File("/File/一步步学习ASP.NET MVC3 第八章.doc", "application/msword", "一步步学习ASP.NET MVC3 第八章.doc");
  5.  
  6. }

结果如图:

至于其他的函数,只有第一个参数不同,只需要给出响应的参数就可以了。通过上面的函数定义我们会发现,第一个参数的类型就三个。

1,string fileName:文件的路径

2,Stream fileStream:以文件流的方式下载

3,byte[] filecontent:以字节的方式下载。

大家可以分别试试。好了,本章就基本上把ActionResult几个子类讲完了,那么大家可以多多练习一下。明天老魏继续写!

一步步学习ASP.NET MVC3 (12)——FileResult的更多相关文章

  1. 一步步学习ASP.NET MVC3 章节总结

    请注明转载地址:http://www.cnblogs.com/arhat 对于<一步步学习ASP.NET MVC3>系列工15章,那么为了方便大家能够快速的预览,老魏在这里为这个系列提供一 ...

  2. 一步步学习ASP.NET MVC3 (1)——基础知识

    请注明转载地址:http://www.cnblogs.com/arhat 首先在这里我想声明一下,这个ASP.NET MVC3系列是我在授课过程中的一些经验,有什么不对的地方,请大家指出,我们共同的学 ...

  3. 一步步学习ASP.NET MVC3 (3)——Razor(1)

    请注明转载地址:http://www.cnblogs.com/arhat 首先这个<一步步学习ASP.NET MVC3>前段时间有些忙,没有顾得上写文章,昨天呢写了3个和ASP.NET的相 ...

  4. 一步步学习ASP.NET MVC3 (2)——入门程序

    请注明转载地址:http://www.cnblogs.com/arhat 在上一节中,我们只是简单的介绍了什么是MVC及MVC的运行原理.而本节呢,主要来实现下一ASP.NET MVC3的开发流程,并 ...

  5. 一步步学习ASP.NET MVC3 (14)——Route路由

    请注明转载地址:http://www.cnblogs.com/arhat 由于今天是星期六,所以多写几篇,感觉前几天的忙碌没有及时发布文章,趁着周末老魏尽力的多写几篇文章.因为本系列基本上快结束了,所 ...

  6. 一步步学习ASP.NET MVC3 (5)——View从Action中获得数据

    请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,我们把Razor的模板技术给大家介绍了一下,当然模板中还有其他的知识点,这个以后我们还会继续讲解.本章我们主要讨论 ...

  7. 一步步学习ASP.NET MVC3 (6)——@helper,@functions

    请注明转载地址:http://www.cnblogs.com/arhat 在前一章中,我们讲述了View如何从Action中获得数据,并显示出来,但随着需求的变化,我们可能要对View中显示的数据作出 ...

  8. 一步步学习ASP.NET MVC3 (7)——Controller,Action,ActionResult

    请注明转载地址:http://www.cnblogs.com/arhat 前面几章我们讲解的都是关于View方面的知识,虽然还有很多关于View的知识没有讲,但是没关系,我们在后面使用到的时候在讲解, ...

  9. 一步步学习ASP.NET MVC3 (13)——HTML辅助方法

    请注明转载地址:http://www.cnblogs.com/arhat 今天老魏是在十分郁闷,我的一个U盘丢了,心疼里面的资料啊,全部是老魏辛辛苦苦积攒的Linux资料,太心疼,到现在心情还不是很爽 ...

随机推荐

  1. A XSS filter for Java EE web apps--转载

    原文地址:http://java.dzone.com/articles/xss-filter-java-ee-web-apps Cross Site Scripting, or XSS, is a f ...

  2. 萌货猫头鹰登录界面动画iOS实现分析

    动画效果仿自国外网站readme.io的登录界面,超萌可爱的猫头鹰,具体效果如下图所示. 动画实现核心: 动画核心的是用到了iOS中UIView的transform属性,然后根据尺寸坐标对四张图片进行 ...

  3. SVN 之 去掉SVN管理标记

    当项目不需要SVN标志的时候, 方式一:很多人设置Windows显示隐藏文件,然后将项目中的所有.svn文件删除,这种方法是最笨的方法. 方式二:通过注册表方式 [1]新建一个文本文件.文本的内容为: ...

  4. ping与telnet的区别

    ping 查看某个IP地址是否有效.还可以得出解析IP..评估网络质量.telnet 查看可以PING通IP的机子上的某个端口是否可以进行访问(telnet IP port) ,如果连接失败,可能是防 ...

  5. jsp HTTP Status 405 - HTTP method GET is not supported by this URL

    package myservlet.control; import java.io.IOException; import java.io.PrintWriter; import javax.serv ...

  6. Java 开源分布式缓存框架Ehcache

    http://www.codeceo.com/article/java-ehcache.html

  7. Windows2012中安装Nginx并创建为Windows服务

    安装Nginx 下载windows版nginx (http://nginx.org/download/nginx-1.10.0.zip),之后解压到需要放置的位置(D:\xampp\nginx) 将N ...

  8. synopsys license maker

    参见bingled大牛的文章(http://bbs.eetop.cn/viewthread.php?tid=366602&extra=&page=1) 注意:经坛友提示,部分系统版本2 ...

  9. ACM——Quicksum

    Quicksum 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:615            测试通过:256 描述 A chec ...

  10. Oracle归档已满的处理办法

    SqlPlus: / as sysdba select * from V$FLASH_RECOVERY_AREA_USAGE; show parameter log_archive_dest; sho ...