MVC 实现下载功能主要借助于 File 属性:

//下载文件接口

public ActionResult GetTrackTempIsc(ICSModels icsModels)

{

bool flag = false;

string path = Server.MapPath("~/File/file.ics");

if (icsModels.IcsFMTTYPE.Contains("{1}br{2}"))

{

icsModels.IcsFMTTYPE = icsModels.IcsFMTTYPE.Replace("{1}br{2}", "<br/>");

}

var trackIsc = GetTempContent(path, icsModels);                       //字符流

byte[] bt = System.Text.Encoding.UTF8.GetBytes(trackIsc);

string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".ics";//客户端保存的文件名

//以字符流的形式下载文件

return File(bt, "application/vnd.ms-txt", fileName);

}

/// <summary>
        /// 读取文件内容
        /// </summary>
        public string GetTempContent(string tempPath, ICSModels icsModels)
        {
            StringBuilder content = new StringBuilder();
            if (System.IO.File.Exists(tempPath))
            {
                using (StreamReader sr = new StreamReader(tempPath, Encoding.GetEncoding("utf-8")))
                {
                    String srLine;
                    while ((srLine = sr.ReadLine()) != null)
                    {
                        content.AppendLine(srLine);
                    }
                }
                // string strContent = content.ToString();
                return ConvertTempContent(content.ToString(), icsModels);
            }
            return null;
        }
        /// <summary>
        /// 字符替换
        /// </summary>
        private string ConvertTempContent(string source, ICSModels icsModels)
        {
            if (source.Contains("#IcsCREATED#"))
                source = source.Replace("#IcsCREATED#", icsModels.IcsCREATED);
            return source;
        }

//PDF 文件下载

public ActionResult GetPdfFile(PdfDownModel pdfModel)

{

var pdfPath = Server.MapPath("~/PdfFile/outstanding.pdf");

PdfFileEditor fileEditor = new PdfFileEditor();

Document doc = new Document(pdfPath);

PdfContentEditor pdfContentEditor = new PdfContentEditor();

pdfContentEditor.BindPdf(doc);

pdfContentEditor.ReplaceText("Qi Liu", pdfModel.UserName);             //保存

var maPath = "~/pdfDown/" + pdfModel.UserName + ".pdf";

var docPath = Server.MapPath(maPath);

doc.Save(docPath);             //字符流

// byte[] bt = System.Text.Encoding.UTF8.GetBytes(docPath);

//string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";//客户端保存的文件名

// System.IO.File.Delete(docPath);

string fileName = pdfModel.UserName + ".pdf";//客户端保存的文件名             //以字符流的形式下载文件

return File(docPath, "application/pdf", fileName);

}

ASP.NET MVC5 之 客户端实现文件的下载的更多相关文章

  1. ASP.NET MVC5入门2之Ajax实现数据查询

    开发环境:VS2013 数据库:SQL Server2008R2 架构:ASP.NET MVC5 开发语言:C# 代码下载链接:http://download.csdn.net/detail/u010 ...

  2. asp.net mvc5 下载文件方法

    控制器自带的 FileContentResult 可以让我们很方便的返回文件到服务端,减少了很多步骤.用于下载文件的时候,像视频.文本.图片这种浏览器支持的文件,默认就会被浏览器打开.这时候想让它变成 ...

  3. ASP.NET MVC5基础 – MVC文件架构

    创建MVC项目 首先,我们使用Visual Studio2019创建一个MVC架构的应用程序.步骤如下:首先打开VS2019,在启动页选择[创建新项目].然后选择创建 ASP.NET Web 应用程序 ...

  4. 彻底解决asp.net mvc5.2.2:vs2013 cshtml视图文件报错(当前上下文中不存在名称“model”,ViewBag,Url)

    最近遇到一个奇葩的问题,在vs2013下cshtml视图文件报错,出现当前上下文中不存在名称“model”,ViewBag,Url等等),在视图中也没有智能提示了,用@model声明视图的model类 ...

  5. asp dotnet core 支持客户端上传文件

    本文告诉大家如何在 asp dotnet core 支持客户端上传文件 新建一个 asp dotnet core 程序,创建一个新的类,用于给客户端上传文件的信息 public class Kanaj ...

  6. [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则

    目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ...

  7. [Asp.net MVC]Asp.net MVC5系列——第一个项目

    目录 概述 创建第一个项目 添加控制器 总结 概述 本教程是个人一步一步学习的总结,希望能帮到正在进入ASP.Net MVC5方向的朋友,个人也是准备进入ASP.NET MVC5领域,虽然艰辛,但是乐 ...

  8. [Asp.net MVC]Asp.net MVC5系列——添加视图

    目录 系列文章 概述 添加视图 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 概述 在这一部分我们添加一个新的控制器HelloWorldController类, ...

  9. ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用

    文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节:ASP.NET MVC ...

随机推荐

  1. 不能更通俗了!KMP算法实现解析

    我之前对于KMP算法理解的也不是很到位,如果很长时间不写KMP的话,代码就记不清了,今天刷leetcode的时候突然决定干脆把它彻底总结一下,这样即便以后忘记了也好查看.所以就有了这篇文章. 本文在于 ...

  2. MTK平台添加防止误触代码

    ltr559_old: #include <linux/interrupt.h> #include <linux/i2c.h> #include <linux/slab. ...

  3. Ubuntu 16.04开机自动挂载硬盘分区(转)

    说明:如果挂载以前旧硬盘分区时不需要第2.3步! 1.查看Linux硬盘信息: sudo fdisk -l 2.格式化新硬盘(很危险,注意操作时确定硬盘分区的位置): sudo mkfs.ext4 / ...

  4. substring详细用法,截取不行就用替换

    SUBSTRING 返回字符.binary.text      或      image      表达式的一部分.有关可与该函数一起使用的有效      Microsoft®      SQL    ...

  5. Java发送邮件示例

    利用Java发送邮件示例: 1.发送QQ邮件 import java.util.Properties; import javax.mail.Message; import javax.mail.Mes ...

  6. tplink wr886n v5.0 ttl 接线方法

    我的倒是有ttl信息,但是全是乱码,换过RX和TX,也换过串口速率都没用,附上TTL接线图. ==================================2016-11-02========= ...

  7. Flink内存管理源代码解读之基础数据结构

    概述 在分布式实时计算领域,怎样让框架/引擎足够高效地在内存中存取.处理海量数据是一个非常棘手的问题.在应对这一问题上Flink无疑是做得非常杰出的,Flink的自主内存管理设计或许比它自身的知名度更 ...

  8. C++中使用Json的方法

    使用 C++ 处理 JSON 数据交换格式 一.摘要 JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON官 ...

  9. Redis3.0--集群安装部署

    准备环境 操作系统:CentOS6.5  Redis3.0.0 192.168.3.154 192.168.3.158 192.168.3.160 192.168.3.162 一.安装 安装文件夹 / ...

  10. HFile存储格式

    Table of Contents HFile存储格式 Block块结构 HFile存储格式 HFile是參照谷歌的SSTable存储格式进行设计的.全部的数据记录都是通过它来完毕持久化,其内部主要採 ...