上次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
186行代碼是視圖,將用來顯示下載列表。spa
191行代碼,是下載方法。3d
#1標記,是接收參數。htm
#2標記,獲取數據表中某一筆記錄。blog
#3標記,獲取舊文件名,和新文件名(便是存在應用程序目錄中的文件名)。
#4標記,處理下載文件路徑。
#5標記,獲取下載文件的數據流。
下面的實現步驟,是建立視圖FileDownloadDemo.cshtml:
把fId改成id。再運行看看:
彷佛正常。可是細心的網友也許發現最後一個連接,在下載時,文件名已經變成了"2"。中文文件名在下載時,有點異常。
沒事的,Insus.NET知道問題在哪裏: