Jquery+asp.net实现Ajax方式文件下载实例代码
如果文件中,需要下载一个文件,一般用超级链接的方式即可。
但是如果是图片,浏览器会默认打开图片浏览,不是实现下载。
考虑可以使用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' ); |
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。
其他浏览器无法预计效果。
Jquery+asp.net实现Ajax方式文件下载实例代码的更多相关文章
- jquery的几种ajax方式对比
jquery的几种ajax方式对比 jquery的ajax方式有如下几种: 1. $.post(url,params,callback); 2. $.getJSON(url,params,ca ...
- JQuery 获取json数据$.getJSON方法的实例代码
这篇文章介绍了JQuery 获取json数据$.getJSON方法的实例代码,有需要的朋友可以参考一下 前台: function SelectProject() { var a = new Array ...
- 通过jQuery或ScriptManager以Ajax方式访问服务
1.客户端和服务端 服务端对外提供服务时,可以通过handler或者webservice.handler比较轻便,但是难以对外公开,只有程序员自己知道它到底做了些什么工作.webservice可以将服 ...
- JQuery处理json与ajax返回JSON实例
一.JSON的一些基础知识. JSON中对象通过“{}”来标识,一个“{}”代表一个对象,如{“AreaId”:”123”},对象的值是键值对的形式(key:value). “[]”,标识数组,数组内 ...
- [Javascript,JSON] JQuery处理json与ajax返回JSON实例
转自:http://www.php100.com/html/program/jquery/2013/0905/5912.html [导读] json数据是一种经型的实时数据交互的数据存储方法,使用到最 ...
- (转)JQuery处理json与ajax返回JSON实例
son数据是一种经型的实时数据交互的数据存储方法,使用到最多的应该是ajax与json配合使用了,下面我来给大家介绍jquery处理json数据方法. 一.JSON的一些基础知识. JSON中对象通过 ...
- asp.net 通过ajax方式调用webmethod方法使用自定义类传参及获取返回参数
实体类 public class User { public int Id { get; set; } public string Name { get; se ...
- Ajax 简单的实例代码
<!DOCTYPE HTML><html><head><script src="http://libs.baidu.com/jquery/2.0.0 ...
- jquery ajax jsonp跨域调用实例代码
今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友 客户端代码 复制代码 代码如下: <%@ Page Lan ...
随机推荐
- Spark ML机器学习
Spark提供了常用机器学习算法的实现, 封装于spark.ml和spark.mllib中. spark.mllib是基于RDD的机器学习库, spark.ml是基于DataFrame的机器学习库. ...
- [POI2006] PRO-Professor Szu
Description \(n\) 个别墅以及一个主建筑楼,从每个别墅都有很多种不同方式走到主建筑楼,其中不同的定义是(每条边可以走多次,如果走边的顺序有一条不同即称两方式不同). 询问最多的不同方式 ...
- 关于fasterxml-jackson发生Can not deserialize instance of异常原因验证
关于fasterxml-jackson发生Can not deserialize instance of异常原因验证 这两天线上有大量的java.lang.IllegalArgumentExcepti ...
- SQL Server 中的 NOLOCK 到底是什么意思?
以前遇到过,但仅限于听同事说加上NOLOCK好一些,今天仔细研究测试了下,终于理解了,那么加与不加到底区别在哪呢? 我先说下其区别,之后再做测试. 大家都知道,每新建一个查询,都相当于创建一个会话,在 ...
- [PHP] 算法-根据前序和中序遍历结果重建二叉树的PHP实现
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5 ...
- java中自己常犯的错误汇总
package debug; /** 1.定义一个公共的动物类,包含名字.年龄.颜色和吃饭东西方法 2.定义一个猫类,继承动物类,同时拥有玩游戏的本领 3.定义一个狗类,继承动物类,同时拥有看门的本领 ...
- matlab的解方程的例子
syms x y z=exp(2*x+y)+cos(3*x*y)-exp(1)-1; zz=subs(z,x,1) solve(zz)
- WCF Service 转换为Web Service 中字段属性
1.新建WCF服务,服务中包含对象 2.部署WCF服务,并将其转换为应用程序 3.通过添加服务引用,使用WCF服务 4.调用对应的对象时需要对应的值设置为True. 参考:https://cloud. ...
- linux shell脚本之-变量极速入门与进阶(2)
1,$$:显示当前的进程id号 ghostwu@dev:~/linux/shell/how_to_use_var$ cat show_pid.sh #!/bin/bash echo $$ ghostw ...
- 请输入经过encode编码的URL
美团门店映射: <?php $url = "http://manage.test.kdb.kudianbao.com/Branch/mt_mdysh1d"; $res = u ...