ASP.NET MVC應用程序實現下載功能

上次Insus.NET有在MVC應用程序實現了上傳文件的功能《MVC應用程序顯示上傳的圖片http://www.cnblogs.com/insus/p/3597543.html 
有上傳就有下載。本篇博文是把上傳的文件以列表的形式顯示View視圖上,而後用戶能夠點擊下載。html

爲了解更多的內容,建議你先看上連接一篇。

在MVC應用程序的Entity目錄下,找到和打開FileLibraryEntity.cs,添加一個返回DataTable的方法:
數據庫

 

#1寫一個GetUploadFileByPrimarykey(FileLibrary fl)函數,返回DataTable,目的是傳入主鍵,從數據庫獲取相關的文件信息。ide

#2 與#3修改的地方,與本篇沒有關係,Insus.NET只是看到有代碼冗餘,隨便重構而已。函數


接下來,自定義一個Result,叫DownloadResult吧,這個類有繼承了ContentResult類,還須要override ExecuteResult()方法:
post

 

寫控制器:
url

 

186行代碼是視圖,將用來顯示下載列表。spa

191行代碼,是下載方法。3d

#1標記,是接收參數。htm

#2標記,獲取數據表中某一筆記錄。blog

#3標記,獲取舊文件名,和新文件名(便是存在應用程序目錄中的文件名)。

#4標記,處理下載文件路徑。

#5標記,獲取下載文件的數據流。

 

下面的實現步驟,是建立視圖FileDownloadDemo.cshtml:

 

呈現數據記錄:

 

運行看看,它顯示異常:

 

檢查,發現傳入的參數名與方法接收的名不一致:

 

fId改成id。再運行看看:

 

 

彷佛正常。可是細心的網友也許發現最後一個連接,在下載時,文件名已經變成了"2"。中文文件名在下載時,有點異常。
沒事的,Insus.NET知道問題在哪裏:

 

 把#28行代碼改成#29 #30行代碼。
再運行看看:

相關文章
相關標籤/搜索