MVC实现文件下载

□ 思路

点击一个链接,把该文件的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
});
}
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)
{
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.ActionLink("下载","DownloadFile",new {id = item.Id})
</td>
}
</table>

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

时间: 2024-10-10 20:14:21

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

Spring MVC 4 文件下载实例(带源码)

[本系列其他教程正在陆续翻译中,点击分类:spring 4 mvc 进行查看.源码下载地址在文章末尾.] [翻译 by 明明如月 QQ 605283073] 原文地址:http://websystique.com/springmvc/spring-mvc-4-file-download-example/ 上一篇:Spring MVC 4 使用常规的fileupload上传文件(带源码) 本文将为你展示通过Spring MVC 4实现文件下载. 下载一个文件比较简单,主要包括下面几个步骤. 创建下

MVC 服务器文件下载

文件上传到服务器后下载 window.open   与window.location.href  对txt  或是pdf文件执行的操作是打开,而非下载 mvc controller 自带有如下方法 protected internal FileContentResult File(byte[] fileContents, string contentType);protected internal FileStreamResult File(Stream fileStream, string c

Spring MVC 的文件下载

在看Spring MVC文件下载之前请先看Spring MVC文件上传 地址:http://www.cnblogs.com/dj-blog/p/7535101.html 文件下载比较简单,在超链接中指定文件下载的文件名就可以了. springMVC提供了一个ResponseEntity类型,可以方便的定义返回的HttpHeads和HttpStatus. 在FileUploadController中加入下面这个controller @RequestMapping("/download")

Spring MVC实现文件下载

 下载文件① 下载文件需要将byte数组还原成文件. 首先使用mybatis将数据库中的byte数组查出来,指定文件名(包括格式).然后使用OutputStream将文件输入 @RequestMapping(value = "downPhotoById") public void downPhotoByStudentId(String id, final HttpServletResponse response){ PhotoEntity entity = this.photoMapp

asp.net mvc 简单文件下载

文件下载,先获取文件的路径,在通过招到文件的存放地址,通过return File(path, "text/plain", Url.Encode(name));,可以直接下载,但是必须要修改返回数据类型"text/plain" // /// <summary> /// 文件下载 /// </summary> /// <returns></returns> [ActionName("DowLoad")]

mvc之文件下载

首先你要有四张图片,也就是数组中的数 public ActionResult Index()//创建视图{ViewBag.list =new int[] { 5, 6, 7,8 }; return View();}public ActionResult Get(int? id){FilePathResult fpr = new FilePathResult(Server.MapPath("~/Content/imgs/"+id+".jpg"),"imgs/

asp.net Mvc实现文件下载

<a href='~/Download?filePath=路径" > 下载 </a> public ActionResult Download(string filePath)   //文件绝对路径 {     return File(filePath, "application/octet-stream", Url.Encode("文件名称"));  }

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

上一篇我们说到大文件的分片下载.断点续传.秒传,有的博友就想看分片下载,我们也来总结一下下载的几种方式,写的比较片面,大家见谅^_^. 下载方式: 1.html超链接下载: 2.后台下载(四种方法:返回filestream.返回file.TransmitTile方法.Response分块下载). 1.html超链接下载 超级链接在本质上属于一个网页的一部分,它是一种允许我们同其他网页或站点之间进行连接的元素. 各个网页链接在一起后,才能真正构成一个网站. 所谓的超链接是指从一个网页指向一个目标的

spring MVC 实现文件下载功能

@RequestMapping("/{filename}") public ResponseEntity<byte[]> download(@PathVariable String filename) throws IOException { ResponseEntity<byte[]> entity = null; try { HttpHeaders headers = new HttpHeaders(); String pathname = getFilep