[实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2
寫在前面
上篇文章修改文件上傳的邏輯,這篇修改下文件下載的邏輯。
系列文章
[EF]vs15+ef6+mysql code first方式
[實戰]MVC5+EF6+MySql企業網盤實戰(1)
[實戰]MVC5+EF6+MySql企業網盤實戰(2)——用戶注冊
[實戰]MVC5+EF6+MySql企業網盤實戰(3)——驗證碼
[實戰]MVC5+EF6+MySql企業網盤實戰(4)——上傳頭像
[Bootstrap]modal彈出框
[實戰]MVC5+EF6+MySql企業網盤實戰(5)——登錄界面,頭像等比例壓縮
[實戰]MVC5+EF6+MySql企業網盤實戰(5)——頁面模板
[實戰]MVC5+EF6+MySql企業網盤實戰(5)——ajax方式注冊
[實戰]MVC5+EF6+MySql企業網盤實戰(6)——ajax方式登錄
[實戰]MVC5+EF6+MySql企業網盤實戰(7)——文件上傳
[實戰]MVC5+EF6+MySql企業網盤實戰(8)——文件下載、刪除
[實戰]MVC5+EF6+MySql企業網盤實戰(9)——編輯文件名
[實戰]MVC5+EF6+MySql企業網盤實戰(10)——新建文件夾
[實戰]MVC5+EF6+MySql企業網盤實戰(11)——新建文件夾2
[實戰]MVC5+EF6+MySql企業網盤實戰(12)——新建文件夾和上傳文件
[實戰]MVC5+EF6+MySql企業網盤實戰(13)——編輯文件夾
[實戰]MVC5+EF6+MySql企業網盤實戰(14)——邏輯重構
[實戰]MVC5+EF6+MySql企業網盤實戰(15)——邏輯重構2
文件下載
下載傳入的參數不變,但是這個時候需要根據文件的md5,去目錄NetDisk中查找文件。這樣才能真正的找到物理文件。
代碼如下:
/// <summary>/// 文件下載/// </summary>/// <param name="fileId"></param>public void DownLoadFile(string fileId){UserInfo userInfo = Session["user"] as UserInfo;if (userInfo == null){RedirectToAction("Login", "UserInfo");return;}if (string.IsNullOrEmpty(fileId)){throw new ArgumentNullException("fileId is errror");}int id = Convert.ToInt32(fileId);var findFile = _myFileServiceRepository.Find(x => x.Id == id);if (findFile == null){AlertMsg("文件不存在", "");return;}string filePath = Path.Combine(Server.MapPath("~/NetDisk/"), findFile.FileMd5 + findFile.FileExt);//以字符流的形式下載文件FileStream fs = new FileStream(filePath, FileMode.Open);byte[] bytes = new byte[(int)fs.Length];fs.Read(bytes, 0, bytes.Length);fs.Close();Response.ContentType = "application/octet-stream";//通知瀏覽器下載文件而不是打開Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(findFile.FileName, System.Text.Encoding.UTF8));Response.BinaryWrite(bytes);Response.Flush();Response.End();}總結
下載的邏輯也很好修改,只是修改一下文件的路徑,在數據庫中已經存有md5和文件的擴展名,這時候拼接一個文件的真實路徑就可以了。
總結
以上是生活随笔為你收集整理的[实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos平台openstack sp
- 下一篇: 项目开发--------XMPP即时通讯