如果文件中,需要下载一个文件,一般用超级链接的方式即可。

但是如果是图片,浏览器会默认打开图片浏览,不是实现下载。

考虑可以使用jquery ajax提交form请求的方式。

jquery download函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 // Ajax 文件下载
    jQuery.download = function (url, data, method) {
        // 获取url和data
        if (url && data) {
            // data 是 string 或者 array/object
            data = typeof data == 'string' ? data : jQuery.param(data);
            // 把参数组装成 form的  input
            var inputs = '';
            jQuery.each(data.split('&'), function () {
                var pair = this.split('=');
                inputs += '<input type="hidden" name="' + pair[0] + '" value="' + pair[1] + '" />';
            });
            // request发送请求
            jQuery('<form action="' + url + '" method="' + (method || 'post') + '">' + inputs + '</form>')
        .appendTo('body').submit().remove();
        };
    };

用jquery的方式组织一个字符串,模拟提交一个form请求。

也就是动态渲染表单,提交表单后再删除。

html的图片代码:

1
<img onclick=\"GetSrcFromSvc('" + name + "')\" src=\"" + imgurl + "\" //>

GetSrcFromSvc函数实现调用:

1
 $.download("http://localhost:2204/wx/Default.aspx""img=" + url, 'post');

asp.net服务器端代码:aspx文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite下载超过
 400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。  ///指定被输出图像的地址
  
        string imgurl = Request.Form["img"];
        string FileName = Server.MapPath(imgurl);
        //   System.Drawing.Image img = System.Drawing.Image.FromFile(imgurl);
        //   MemoryStream ms = new System.IO.MemoryStream();
        //   img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        //   img.Dispose();
        //   context.Response.ClearContent();
        //   context.Response.ContentType = "image/jpg";
        //   context.Response.BinaryWrite(ms.ToArray());
        //   //context.htm = htm&File(FileName);
        //   將buffer 中的stream全部送出
        //    context.Response.Flush();
           context.Response.End();
        string filePath = Server.MapPath(imgurl);//路径 
        if (File.Exists(filePath))
        {
            FileInfo fileinfoo = new FileInfo(filePath);
            Response.ContentType = "application/x-zip-compressed";
            Response.AddHeader("Content-Disposition""attachment;filename=" + fileinfoo.Name + "");
            Response.TransmitFile(filePath);
        }
        else
        {
            htm = htm&("未找到文件。");
        }

asp.net 流方式下载:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
     string imgurl = Request.Form["img"];
        string FileName = Server.MapPath(imgurl);
        if (File.Exists(FileName))
        {
            FileInfo fileinfoo = new FileInfo(FileName);
            //以字符流的形式下载文件
            FileStream fs = new FileStream(FileName, FileMode.Open);
            byte[] bytes = new byte[(int)fs.Length];
            fs.Read(bytes, 0, bytes.Length);
            fs.Close();
            Response.ContentType = "application/octet-stream";
            //通知浏览器下载文件而不是打开
            Response.AddHeader("Content-Disposition""attachment;   filename=" + HttpUtility.UrlEncode(fileinfoo.Name, System.Text.Encoding.UTF8));
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();
        }

测试环境:

win7+IE9 IE10 。手机端:uc。

其他浏览器无法预计效果。

转载于:https://www.cnblogs.com/telwanggs/p/4865694.html

Jquery+asp.net实现Ajax方式文件下载实例代码相关推荐

  1. java ajax jquery分页插件_jQuery ajax分页插件实例代码

    既然说到基于jQuery的ajax分页插件,那我们就先看看主要的代码结构:(我觉得对咱们程序员来说再优美的文字描述.介绍也 比不上代码来得实在.) 1.首先定义一个pager对象: var sjPag ...

  2. ajax简单实例代码,分享Ajax创建简单实例代码

    XmlHttp是一套可以在Javascript.VbScript.Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API.XmlHttp最大的用处是可以更新网页的部分内容而 ...

  3. 5种ASP.NET页面间传递参数实例代码

    本文假设第一个页面为send.aspx,第二个页面为receive.aspx 1.通过URL链接地址传递 (1) send.asp代码 protected void Button1_Click(obj ...

  4. jq处理返回来json_(转)JQuery处理json与ajax返回JSON实例

    son数据是一种经型的实时数据交互的数据存储方法,使用到最多的应该是ajax与json配合使用了,下面我来给大家介绍jquery处理json数据方法. 一.JSON的一些基础知识. JSON中对象通过 ...

  5. asp.net 通过ajax方式调用webmethod方法使用自定义类传参及获取返回参数

    实体类    public class User     {         public int Id { get; set; } public string Name { get; set; } ...

  6. 前端文件表单/ajax上传实例代码

    表单上传文件 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF ...

  7. Ajax 简单的实例代码

    前端代码实现: <!DOCTYPE html> <html lang="en"> <head><meta charset="UT ...

  8. jquery仿凡客诚品图片切换的效果实例代码

    清远大学城网(http://www.qydxc.com) 是一个不错的图片切换效果,就是可以图片带文字说明的折叠效果,下面我来给大家推荐两个版本的效果,有需要了解的朋友可参考. 图片版的效果代码如下复 ...

  9. php文件下载到服务器代码,PHP文件下载实例代码浅析

    文件下载的功能对一个网站而言基本上是必备的了,今天就来看看php是如何实现文件下载的吧. 无控制类型 这里说的无控制类型是指 没有添加php代码控制的资源可以被直接下载的那些类型.一般而言,压缩文件. ...

最新文章

  1. Hinton:人类就是机器,绝妙的机器
  2. 3D Computer Grapihcs Using OpenGL - 04 First Triangle
  3. blockhouses
  4. 16、分布式文档系统--document的_source元数据以及定制返回结果解析(来自学习资料+自己整理)
  5. 史上最详细的XGBoost实战
  6. HTTP 数据包头解析
  7. Opencv和C++实现canny边缘检测
  8. 谷歌提出深度CNN模型NIMA:帮你挑选清晰且有美感的图片
  9. 分享SCI写作经验和一些工具
  10. NYOJ1282部分和问题--DFS剪枝入门
  11. 编译好的C一执行就崩溃,第一句输出都没有,是怎么回事?
  12. 树上启发式合并算法概述及习题
  13. Linux杂谈之unzip命令
  14. 利用ADO连接数据库时,Rs.recordcount总是返回-1,解决办法
  15. 利用文心大模型制作多功能机器人
  16. Oracle数据库:创建和删除视图view,简单和复杂视图,内建视图,topN分析,oracle分页查询
  17. 用python做一个表白软件手机版_用python写一个5.20的表白小程序吧
  18. 燕之屋三年半消耗近7亿,难逃“智商税”风波
  19. 天翼云 杭州 云主机(VPS) 性能评测
  20. Eclipse插件6

热门文章

  1. linux运维命令日志管理,Linux运维实战第二天:Linux基础命令之文件处理命令
  2. 如何导出android studio程序,(技术)聊聊Android Studio 如何生成Jar
  3. php判断值是否为空然后定义,判断php变量是不是定义,是否为空
  4. java file list listfiles,Java File listFiles()用法及代码示例
  5. 数据结构之栈与递归的应用(八皇后递归解法)
  6. 2d Laser 和 Odomter 内外参数标定工具原理及使用方法
  7. Redis模式对比:主从模式 VS 哨兵sentinel模式 VS Redis cluster模式
  8. ExecutorService--线程池
  9. MySQL 瓶颈分析及优化
  10. BZOJ 4736 温暖会指引我们前行 LCT+最优生成树+并查集