写在前面

上篇文章修改文件上传的逻辑,这篇修改下文件下载的逻辑。

系列文章

[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相关推荐

  1. [实战]MVC5+EF6+MySql企业网盘实战(16)——逻辑重构3

    写在前面 本篇文章将新建文件夹的逻辑也进行一下修改. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5 ...

  2. [实战]MVC5+EF6+MySql企业网盘实战(24)——视频列表

    写在前面 上篇文章实现了文档列表,所以实现视频列表就依葫芦画瓢就行了. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) ...

  3. mvc5 ef6 mysql_[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2

    写在前面 今天吃饭回来,突然有一个更好的想法,这里做一下记录. 系列文章 [实战]MVC5+EF6+MySql企业网盘实战(17)--思考2 思路 平时如果要获取电脑上的文件,大都会采用递归的方式,所 ...

  4. [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册

    写在前面 上篇文章简单介绍了项目的结构,这篇文章将实现用户的注册.当然关于漂亮的ui,这在追后再去添加了,先将功能实现.也许代码中有不合适的地方,也只有在之后慢慢去优化了. 系列文章 [EF]vs15 ...

  5. [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件

    写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...

  6. 上传头像mysql_上传头像 - MVC5+EF6+MySql企业网盘实战 - 爱整理

    写在前面 最近又开始忙了,工期紧比较赶,另外明天又要去驾校,只能一个功能一个功能的添加了,也许每次完成的功能确实不算什么,等将功能都实现了,然后在找一个好点的ui对前端重构一下. 示例 这里采用最简单 ...

  7. SQL注入实战————1、MySQL手工注入实战

    无意中发现了一个巨牛巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,小白也能学,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家 ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

    开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB  升级后界面效果如下: 日程管理   http:// ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统

    ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...) 开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联 ...

最新文章

  1. AngularJS中的按需加载ocLazyLoad
  2. Linux 命令[3]:cd
  3. 第三回 基类中的方法,应该根据实际情况,虚的虚,抽象的抽象!
  4. Bootstrap 警告
  5. Atitit httpclient 概述  rest接口
  6. web前端 html+css+javascript网页设计实例 家乡网站制作
  7. c语言 zipf分布,Zipf分布:如何测量Zipf分布
  8. 中国石油燃气蓄能器市场深度研究分析报告(2021)
  9. 网络云存储技术Windows server 2012 (项目十七 配置iSCSI传输的安全性)
  10. 项目管理:如何使用甘特图制定项目计划
  11. 【词库管理】新词提取小工具
  12. 实时传输协议:RTP、RTCP、RTSP介绍
  13. 英语日常短语积累(6)-银行考试真题
  14. docker安装过程 和部署2048小游戏
  15. 信息检索——名词解释、简答题
  16. 【历史上的今天】12 月 6 日:微波炉问世;多媒体格式 Mkv 诞生;日立环球存储科技公司成立
  17. python encoding报错_Python:'gbk' codec can't encode character
  18. ZOJ:1203 Swordfish
  19. matlab m文件转换为txt,MATLAB两种M文件
  20. 微信公众号获取事件监听

热门文章

  1. gunicorn多进程不死_WEB,gunicorn - 无论是多进程、多线程、协程模式,同一个浏览器窗口多个标签页访问同一个url,看上去不会并发的问题...
  2. cocob optimizer让学习率不再是算法参数
  3. 修改linux系统iqn,linux iSCSI target配置全过程
  4. java搭配oracle,Java联接Oracle(高级篇)
  5. 3分钟入门python_3分钟学完Python,直接从入门到精通「史上最强干货库」
  6. AWS DataPipline 的一次尝试。
  7. 仿真环境Mininet的搭建
  8. MongoDb在Windows上的下载安装以及可视化工具的下载与使用
  9. Winforn中导入Excel并显示然后获取多选框选中的内容
  10. Node入门之创建第一个HelloNode