2010-09-10 74 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

相關問題