□ 思路

点击一个链接,把该文件的Id传递给控制器方法,遍历文件夹所有文件,根据ID找到对应文件,并返回FileResult类型。

与文件相关的Model:

namespace MvcApplication1.Models
{
public class FileForDownload
{
public int Id { get; set; }
public string Name { get; set; }
public string Path { get; set; }
}
}

写一个针对文件的帮助类,遍历指定文件夹的所有文件,返回FileForDownload集合类型。在项目根目录下创建Files文件夹,存放下载文件。

using System.Collections.Generic;
using System.IO;
using System.Web.Hosting;
using MvcApplication1.Models; namespace MvcApplication1.Helper
{
public class FileHelper
{
public List<FileForDownload> GetFiles()
{
List<FileForDownload> result = new List<FileForDownload>();
DirectoryInfo dirInfo = new DirectoryInfo(HostingEnvironment.MapPath("~/Files")); int i = 0;
foreach (var item in dirInfo.GetFiles())
{
result.Add(new FileForDownload()
{
Id = i + 1,
Name = item.Name,
Path = dirInfo.FullName + @"\" + item.Name
});
i++;
}
return result;
}
}
}

HomeController中:

using System;
using System.Linq;
using System.Web.Mvc;
using MvcApplication1.Helper; namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
private FileHelper helper; public HomeController()
{
helper = new FileHelper();
} public ActionResult Index()
{
var files = helper.GetFiles();
return View(files);
} public FileResult DownloadFile(string id)
{
var fId = Convert.ToInt32(id);
var files = helper.GetFiles();
string fileName = (from f in files
where f.Id == fId
select f.Path).FirstOrDefault();
string contentType = "application/pdf";
return File(fileName, contentType, "Report.pdf");
}
}
}

Home/Index.cshtml中:

@model IEnumerable<MvcApplication1.Models.FileForDownload>

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
} <table>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.ActionLink("下载", "DownloadFile", new { id = item.Id })
</td>
</tr> }
</table>

参考资料:
Download Files in ASP.NET MVC 3 using Controller Action

MVC实现文件下载的更多相关文章

  1. MVC 服务器文件下载

    文件上传到服务器后下载 window.open   与window.location.href  对txt  或是pdf文件执行的操作是打开,而非下载 mvc controller 自带有如下方法 p ...

  2. Spring MVC 的文件下载

    在看Spring MVC文件下载之前请先看Spring MVC文件上传 地址:http://www.cnblogs.com/dj-blog/p/7535101.html 文件下载比较简单,在超链接中指 ...

  3. asp.net mvc 简单文件下载

    文件下载,先获取文件的路径,在通过招到文件的存放地址,通过return File(path, "text/plain", Url.Encode(name));,可以直接下载,但是必 ...

  4. Spring MVC实现文件下载

     下载文件① 下载文件需要将byte数组还原成文件. 首先使用mybatis将数据库中的byte数组查出来,指定文件名(包括格式).然后使用OutputStream将文件输入 @RequestMapp ...

  5. C# Mvc中文件下载

    public ActionResult DownloadFile(string id) { var fileinfo = CommonAnnexService.Get(id); if (fileinf ...

  6. mvc之文件下载

    首先你要有四张图片,也就是数组中的数 public ActionResult Index()//创建视图{ViewBag.list =new int[] { 5, 6, 7,8 };return Vi ...

  7. 解决MVC模式文件下载附件中文名称乱码

    解决如下: 进行url编码:Server.UrlPathEncode(file.AttachmentName) return File(file.TempWorkPath, CommonTools.G ...

  8. C# Net MVC 大文件下载几种方式、支持速度限制、资源占用小

    上一篇我们说到大文件的分片下载.断点续传.秒传,有的博友就想看分片下载,我们也来总结一下下载的几种方式,写的比较片面,大家见谅^_^. 下载方式: 1.html超链接下载: 2.后台下载(四种方法:返 ...

  9. MVC&WebForm对照学习:文件下载

    说完了WebForm和MVC中的文件上传,就不得不说用户从服务器端下载资源了.那么今天就扯扯在WebForm和MVC中是如何实现文件下载的.说起WebForm中的文件上传,codeshark在他的博文 ...

随机推荐

  1. 【[SDOI2009]Bill的挑战】

    一看题解好像全是状压DP,那么我就来补充一个容斥写法吧 乍一看,好像是水题,枚举选哪k个串,然后判断 1,如果这k个串中至少两个串某位置确定且不相同,答案显然为02,如果这个位置只被有且仅有一个串确定 ...

  2. CSDN博客专家申请成功

    又一个值得纪念的日子,上周六申请CSDN博客专家,今天中午审批通过.使用CSDN好几年了,从未想到能把博客一步步的写到这个地步. 曾经,写过一段博客,只是为了记录和分享.中间由于工作的变动和繁忙中断了 ...

  3. Elasticsearch5.0 安装问题

    使用Elasticsearch5.0 必须安装jdk1.8 [elsearch@vm-mysteel-dc-search01 bin]$ java -version java version &quo ...

  4. Web Api之Cors跨域以及其他跨域方式(三)

    我们知道ajax不能跨域访问,但是有时我们确实需要跨域访问获取数据,所以JSONP就此诞生了,其本质使用的是Script标签,除JSONP以外还有另外实现跨域方式 一.手动实现JSONP跨域 1.首先 ...

  5. 【AtCoder】AGC023 A-F题解

    可以说是第一场AGC了,做了三道题之后还有30min,杠了一下D题发现杠不出来,三题滚粗了 rating起步1300+,感觉还是很菜... 只有三题水平显然以后还会疯狂--啊(CF的惨痛经历) 改题的 ...

  6. 8VC Venture Cup 2016 - Elimination Round F - Group Projects dp好题

    F - Group Projects 题目大意:给你n个物品, 每个物品有个权值ai, 把它们分成若干组, 总消耗为每组里的最大值减最小值之和. 问你一共有多少种分组方法. 思路:感觉刚看到的时候的想 ...

  7. 初始Winsock编程

    1.套接字的创建和关闭 使用套接字之前,必须使用socket函数创建一个套接字,此函数调用成功将返回一个套接字句柄. 1 SOCKET socket( 2 int af, //用来指定套接字使用的地址 ...

  8. HTML5 Canvas游戏开发(二)高级功能

    一.变形 1.放大和缩小 scale(X,Y)函数. 当使用该函数时,其起始坐标值也被放大或缩小.当X.Y为负值时,可以实现翻转. 2.平移变换 translate(X,Y)函数. 表示水平方向向左移 ...

  9. MongoDB入门教程二[MongoDB Shell 简介与使用]

    MongoDB Shell 是MongoDB自带的JavaScript Shell,随MongoDB一同发布,它是MonoDB客户端工具,可以在Shell中使用命令与MongoDB实例交互,对数据库的 ...

  10. GPS数据包格式及数据包解析

    GPS数据包解析 GPS数据包解析 目的 GPS数据类型及格式 数据格式 数据解释 解析代码 结构体定义 GPRMC解析函数 GPGGA解析函数 测试样例输出 gps数据包格式 gps数据解析 车联网 ...