2010-09-10 26 views
1

我想制作一个响应并添加文件附件标题,这是在ASP.NET MVC Action中这样做的方法吗?通常我会返回像int,string或更常见的ActionResult。但是,我可以直接返回一个HttpResponse回到他们的浏览器吗?HttpResponse是公共ASP.NET MVC Action的可接受返回类型吗?

所以,如果他们去/控制器/行动/它会返回到他们的浏览器的HTTP响应。

回答

2

我使用FilePathResult返回类型,每当我想下载返回一个文件到用户:

public FilePathResult DownloadFile() { 
    FilePathResult file = new FilePathResult("c:\\test.txt", "text/plain"); 
    return file; 
} 

的第一个参数是路径到您的本地系统(或网络共享)上的文件时,第二个参数是您想要向浏览器报告的MIME类型。如果要手动自定义用户在提示下载文件时将看到的文件名,可以设置file.FileDownloadName。

编辑:发现的different options(FilePathResult,FileStreamResult,FileContentResult)柜面你想读了它多一点(帖子的倒数第三)的一个体面的概述。

+0

很酷,你知道这种方法吗,如果我回来说一个.mp3它会被浏览器播放还是会被下载?我知道如果我直接发送他们的MP3文件与重定向它将由大多数浏览器播放,我想强制下载 – BigOmega 2010-09-10 20:18:43

+0

我认为它将HTTPHeader'内容处置'设置为'附件',这将强制即将发生。尽管目前还不是100%肯定的。最糟糕的情况是在返回文件之前抓住HTTPResponse,并确保已设置标题。 – Parrots 2010-09-10 20:27:46

+0

+1 @Ryan如果FilePathResult或其他人不按照您的要求工作,您可以为它创建自己的自定义结果/这几乎就是您打算编写的代码(在响应对象中执行一些操作)。 – eglasius 2010-09-10 20:28:00

相关问题