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应用程序实现下载功能的更多相关文章

  1. 为ASP.NET MVC应用程序使用高级功能

    为ASP.NET MVC应用程序使用高级功能 这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译, ...

  2. 在ASP.NET MVC应用程序中实现Server.Transfer()类似的功能

    在ASP.NET MVC应用程序中,如果使用Server.Transfer()方法希望将请求转发到其它路径或者Http处理程序进行处理,都会引发“为xxx执行子请求时出错”的HttpException ...

  3. Contoso 大学 - 1 - 为 ASP.NET MVC 应用程序创建 EF 数据模型

    原文 Contoso 大学 - 1 - 为 ASP.NET MVC 应用程序创建 EF 数据模型 原文地址:Creating an Entity Framework Data Model for an ...

  4. NHibernate构建一个ASP.NET MVC应用程序

    NHibernate构建一个ASP.NET MVC应用程序 什么是Nhibernate? NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/re ...

  5. ASP.NET安全[开发ASP.NET MVC应用程序时值得注意的安全问题](转)

    概述 安全在web领域是一个永远都不会过时的话题,今天我们就来看一看一些在开发ASP.NET MVC应用程序时一些值得我们注意的安全问题.本篇主要包括以下几个内容 : 认证 授权 XSS跨站脚本攻击 ...

  6. asp.net MVC 应用程序的生命周期

    下面这篇文章总结了 asp.net MVC 框架程序的生命周期.觉得写得不错,故转载一下. 转载自:http://www.cnblogs.com/yplong/p/5582576.html       ...

  7. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序创建更复杂的数据模型

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第六篇:为ASP.NET MVC应用程序 ...

  8. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序更新相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第八篇:为ASP.NET MVC应用程序 ...

  9. ASP.NET MVC应用程序执行过程分析

    ASP.NET MVC应用程序执行过程分析 2009-08-14 17:57 朱先忠 朱先忠的博客 字号:T | T   ASP.NET MVC框架提供了支持Visual Studio的工程模板.本文 ...

随机推荐

  1. LeetCode——Linked List Cycle II

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ...

  2. 【日报C在23】堆和栈的深入了解

    每日一C之堆与栈的深入理解        每天拾一个C语言贝壳,厚积薄发,积跬步以致千里.  今日贝壳:内存中堆与栈的深入理解.认识一个清晰地内存                          假 ...

  3. linux Apache安装

    原文:linux Apache安装 1.       下载apache,http://httpd.apache.org/download.cgi  通过这个官方网站,我们可以下到最新的版本.现在版本都 ...

  4. React Native开发的通讯录应用

    React Native开发的通讯录应用(使用JavaScript开发原生iOS应用,vczero) 0.前言: 项目地址:https://github.com/vczero/React-Native ...

  5. 标准差(standard deviation)和标准错误(standard error)你能解释一下?

    by:ysuncn(欢迎转载,转载请注明原始消息) 什么是标准差(standard deviation)呢?依据国际标准化组织(ISO)的定义:标准差σ是方差σ2的正平方根.而方差是随机变量期望的二次 ...

  6. 我的Linux学习历程:那些我看过的Linux书籍们

    [+]查看原图http://www.ituring.com.cn/article/119401 来北京工作已经一个多月,大都市的生活比起读大学要忙碌得多,尤其是出行,基本以小时为基本的计时单位.有时茫 ...

  7. C#工具类(包含获取枚举描述方法)

    //把一个对象转换成功键值对字典格式 var obj = new { CustomerId = customerId }; var dic = obj.ToDictionray(); public s ...

  8. jquery选择器基础知识

    $("#myELement")    选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $("di ...

  9. TRIZ系列-创新原理-28-替代机械系统原理

    替代机械系统原理的详细描写叙述例如以下:1)用光.声.热.嗅觉系统替代机械系统:2)用电.磁或电磁场来与物体交互作用:3)用移动场替代精巧场,用随时间变化的场替代固定场,用结构化的场替代随机场:4)使 ...

  10. Swift编程语言学习12 ——实例方法(Instance Methods)和类型方法(Type Methods)

    方法是与某些特定类型相关联的函数.类.结构体.枚举都能够定义实例方法:实例方法为给定类型的实例封装了详细的任务与功能.类.结构体.枚举也能够定义类型方法:类型方法与类型本身相关联.类型方法与 Obje ...