MVC3之FileResult 第十二讲

  前面几章把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”,用来存放要下载的文件。

wps_clip_image-20465

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

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

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

这个函数。

       参数:

  fileName:要显示的文件

  contentTye:文件的MIME类型

我们更改一下代码:

public ActionResult Index()
{
  return File("/File/1.jpg", "image/jpeg");
}

  我们打开浏览器预览一下

wps_clip_image-25353

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

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

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

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

wps_clip_image-15179

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

此时,我们可以使用

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");
}
复制代码

结果如图:

wps_clip_image-12374

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

  1,string fileName:文件的路径

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

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

posted @ 2014-02-26 00:26  杨潇love  阅读(248)  评论(0编辑  收藏  举报