2012-05-19 37 views
3

下載文件正確,這是我行動:顯示或ASP.NET MVC3當文件類型不是文字或圖片

public FileResult ShowFile(long Id) { 

    DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id); 
    return File(file.Content, file.FileType); 
} 

GetById方法返回從SQL數據庫文件,當文件類型爲文本或圖片每件事都可以正確顯示文件,但是當文件類型與顯示一些Unicode的PDF不同時,那麼我怎樣才能正確顯示PDF文件,或讓用戶下載它?

+0

'file.FileType'對於你的PDF文件有什麼價值? –

+0

[如何將MVC中的PDF返回給瀏覽器?](http://stackoverflow.com/questions/1510451/how-to-return-pdf-to-browser-in-mvc) –

+0

文件結果適用於excel和csv給我。我只是用文件名返回內存流。 – kunjee

回答

0

File()方法的第二個參數需要是mime類型。所以說,你的文件是PDF格式,它應該如果你這樣做的工作:

public FileResult ShowFile(long Id) { 

    DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id); 
    // assuming file is a PDF 
    return File(file.Content, "application/pdf"); 
} 

要強制下載而應使用File()重載需要一個第三個參數:

public FileResult ShowFile(long Id) { 

    DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id); 
    // assuming file is a PDF 
    return File(file.Content, "application/pdf", "some-pdf-file.pdf"); 
} 
0

正如上面你提到的需要添加appklication/pdf,但是我也需要頭文件是正確的。

public FileResult ShowFile(long Id) 
    { 

     DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id); 
     // assuming file is a PDF 
     Response.AppendHeader("Content-Disposition", "inline; filename=CustomInvoice.pdf"); 
     return File(file.Content, "application/pdf", "some-pdf-file.pdf"); 
    } 
相關問題