请注明转载地址: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几个子类讲完了,那么大家可以多多练习一下。明天老魏继续写!

最新文章

  1. WPF开发经验
  2. scroll事件实现监控滚动条并分页显示示例(zepto.js)
  3. 【iCore3 双核心板_FPGA】例程六:计数器实验——计数器使用
  4. SQL Server临界点游戏——为什么非聚集索引被忽略!
  5. go strings 常用的几个函数
  6. javascript常用内置对象总结(重要)
  7. [转载]如何查看某个查询使用了多少TempDB空间
  8. 使用shiro安全框架上传文件时用HttpSession获取ServletContext为null问题解决方法。
  9. 用css3实现各种图标效果
  10. C#学习之设计模式:工厂模式
  11. iOS中 Swift初级入门学习(一)
  12. DNS服务器的搭建
  13. Jquery里的特定小技巧
  14. 1209 -The MySQL server is running with the --read-only option
  15. 7.13python多进程
  16. js函数常见的写法以及调用方法
  17. iOS - Contacts 通讯录
  18. 2:C#TPL探秘
  19. 限制html文本框input只能输入数字和小数点
  20. SpringBoot 配置文件 YML/Profile

热门文章

  1. iOS 图片加载框架- SDWebImage 解读
  2. Asp.Net 之 调用远程Web_Service
  3. Android_CntextMenu_example_textSize
  4. 【思考】由安装zabbix至排障php一系列引发的思考
  5. setTimeout和setImmediate以及process.nextTick的区别
  6. oracle两种导出导入方式,即imp与impdp之比较
  7. lrzsz on linux
  8. Centos搭建PHP5.3.8+Nginx1.0.9+Mysql5.5.17
  9. Android logcat使用
  10. ###学习《C++ Primer》- 2