ASP.NET MVC应用程序实现下载功能
上次Insus.NET有在MVC應用程序實現了上傳文件的功能《MVC應用程序顯示上傳的圖片》 http://www.cnblogs.com/insus/p/3597543.html?
有上傳就有下載。本篇博文是把上傳的文件以列表的形式顯示View視圖上,然后用戶可以點擊下載。
為了解更多的內容,建議你先看上鏈接一篇。
在MVC應用程序的Entity目錄下,找到和打開FileLibraryEntity.cs,添加一個返回DataTable的方法:
?
#1寫一個GetUploadFileByPrimarykey(FileLibrary fl)函數,返回DataTable,目的是傳入主鍵,從數據庫獲取相關的文件信息。
#2 與#3修改的地方,與本篇沒有關系,Insus.NET只是看到有代碼冗余,隨便重構而已。
接下來,自定義一個Result,叫DownloadResult吧,這個類有繼承了ContentResult類,還需要override ExecuteResult()方法:
?
寫控制器:
?
186行代碼是視圖,將用來顯示下載列表。
191行代碼,是下載方法。
#1標記,是接收參數。
#2標記,獲取數據表中某一筆記錄。
#3標記,獲取舊文件名,和新文件名(即是存在應用程序目錄中的文件名)。
#4標記,處理下載文件路徑。
#5標記,獲取下載文件的數據流。
?
下面的實現步驟,是創建視圖FileDownloadDemo.cshtml:
?
呈現數據記錄:
?
運行看看,它顯示異常:
?
檢查,發現傳入的參數名與方法接收的名不一致:
?
把fId改為id。再運行看看:
?
?
似乎正常。但是細心的網友也許發現最后一個鏈接,在下載時,文件名已經變成了"2"。中文文件名在下載時,有點異常。
沒事的,Insus.NET知道問題在哪里:
?
?把#28行代碼改為#29 #30行代碼。
再運行看看:
?
?
總結
以上是生活随笔為你收集整理的ASP.NET MVC应用程序实现下载功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IIS6.0支持PHP设置
- 下一篇: 行走在成为程序猿的道路上