a标签ajax直接调用后台方法下载文件:

原创 2017年06月23日 10:25:29

个人原创小说网站:友书–绿色纯净无广告,欢迎大家前来指点

a标签ajax直接调用后台方法下载文件:
—-前台:

<p id="TrueData" style="margin-top: 10px;"><a href="../program/ashx/DownTemplate.ashx">下载空白模板</a>,并按模板填写文件后上传</p>

—-后台:

             public void ProcessRequest(HttpContext context)
             {
                context.Response.ContentType = "text/json";
                context.Response.Buffer = true;
                context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
                context.Response.AddHeader("pragma", "no-cache");
                context.Response.AddHeader("cache-control", "");
                context.Response.CacheControl = "no-cache";
                string url = "上传模版.xls";
                FileHelper.DownloadFile(url);
            }

         public static void DownloadFile(string FileUrl)
         {
            string filePath = path + FileUrl;//路径
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
            if (fileInfo.Exists == true)
              {
                const long ChunkSize = 102400;//100K 每次读取文件,只读取100k,这样可以缓解服务器的压力
                byte[] buffer = new byte[ChunkSize];
                System.Web.HttpContext.Current.Response.Clear();
                System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
                long dataLengthToRead = iStream.Length;//获取下载的文件总大小
                System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
                System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
                while (dataLengthToRead > 0 && System.Web.HttpContext.Current.Response.IsClientConnected)
                {
                    int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
                    System.Web.HttpContext.Current.Response.OutputStream.Write(buffer, 0, lengthRead);
                    System.Web.HttpContext.Current.Response.Flush();
                    dataLengthToRead = dataLengthToRead - lengthRead;
                }
                //System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();
                System.Web.HttpContext.Current.Response.End();
                System.Web.HttpContext.Current.Response.Close();

            }
        }

ps:其实还有种更简单的办法,直接用h5, a标签上在加一个属性就完美解决下载问题,不用写后台繁琐的文件流代码,具体实列如下:

<a href="/Upload/20170608/201706081350129077.xls" download="test.xls">文件下载</a>

download里面填写的是你要下载文件的文件名,举例:如果你要下的文件名为:test.xls,而你在服务器上存的真实文件名为:123456.xls,如果download中填写test,那么下载下来的文件名就叫test.xls而不是123456.xls,download中不管你填不填写,文件都会被下载下来,区别只是下载下来的文件的文件名不同而已

w3school在线测试地址:
http://www.w3school.com.cn/tiy/t.asp?f=html_a_download
有疑问或不懂的同学可以去这里用一下就明白了
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

Jquery.ajax()访问接口

Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的诧异了。 推荐一篇不错的jQuery Ajax 实例文章,忘记了可以去看看,地址为:h...
  • u013279840
  • u013279840
  • 2016年10月11日 11:16
  • 7946

ajax获取后台流使用pdfjs显示

网上找了好多资料都没有找到到底怎么使用文件流来让pdfjs显示。 经过高手的指导,终于弄出来了。遂作下记录,供大家参考。 需求:从文件服务器获得文件(pdf)让前端页面显示 首先我们需要构建好...
  • muluo7fen
  • muluo7fen
  • 2017年08月04日 11:17
  • 767

前台ajax请求后台实现下载

下面是大致代码。 jsp页面: function getDada(){        var returnFilePath = "";         ....          ... ...
  • zhengjingyu810
  • zhengjingyu810
  • 2016年10月27日 14:03
  • 3458

ajax同步异步和使用a链接

ajax提交form表单时,尽量用a链接,不用button(button自带提交功能,与ajax冲突) Document anniu/*使用a链...
  • jiandancubao
  • jiandancubao
  • 2017年09月13日 21:16
  • 222

由Ajax请求一般处理程序下载文件引发的问题后的一些总结

这两天在做报表的导出功能,做了多年的开发,对代码的严谨性自然有了一些自我约束,对于这种与业务无关的通用外部处理,都觉得应该将其划分为外部的服务,做处理调用。所以我就想到采用一般处理程序来做文件的下载,...
  • liyb5619
  • liyb5619
  • 2015年04月16日 10:28
  • 2980

如何使用a标签下载文件

a标签
  • A_one2010
  • A_one2010
  • 2017年04月10日 10:54
  • 5188

利用a标签下载文件(文件地址不限)

利用a标签下载文件,向后台传入服务器端的文件地址,后台根据地址获取输入流后,在向前台输出文件流供下载 前台jsp:测试文档 /** * 根据文件路径下载 * @return */ pu...
  • wpz0713
  • wpz0713
  • 2016年05月24日 10:40
  • 7915

a标签下载txt文件,不是直接打开的方式

在做项目的时候经常会碰到上传下载,通常在上传完文件以后会把文件在项目中的相对路径存到数据库以便下载,如果想直接下载文件,不通过后台action,则可以直接把文件路径给a标签的href属性,例如: a...
  • fangqun663775
  • fangqun663775
  • 2017年05月04日 11:33
  • 4135

html使用a标签不通过后台实现直接下载

html使用a标签不通过后台实现直接下载
  • xiaoming_dai
  • xiaoming_dai
  • 2014年08月02日 12:47
  • 4018

通用的A标签请求替换成ajax请求

转自:http://wchlt.blog.163.com/blog/static/219605720131112327584/ 简介: 将A标签的请求通过ajax代替,支持回调函数,默认请求成...
  • jlk1912
  • jlk1912
  • 2016年05月19日 17:47
  • 502
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:a标签ajax直接调用后台方法下载文件:
举报原因:
原因补充:

(最多只允许输入30个字)