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行代碼。
再運行看看:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM