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' );
|
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方式文件下载实例代码相关推荐
- java ajax jquery分页插件_jQuery ajax分页插件实例代码
既然说到基于jQuery的ajax分页插件,那我们就先看看主要的代码结构:(我觉得对咱们程序员来说再优美的文字描述.介绍也 比不上代码来得实在.) 1.首先定义一个pager对象: var sjPag ...
- ajax简单实例代码,分享Ajax创建简单实例代码
XmlHttp是一套可以在Javascript.VbScript.Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API.XmlHttp最大的用处是可以更新网页的部分内容而 ...
- 5种ASP.NET页面间传递参数实例代码
本文假设第一个页面为send.aspx,第二个页面为receive.aspx 1.通过URL链接地址传递 (1) send.asp代码 protected void Button1_Click(obj ...
- jq处理返回来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; set; } ...
- 前端文件表单/ajax上传实例代码
表单上传文件 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF ...
- Ajax 简单的实例代码
前端代码实现: <!DOCTYPE html> <html lang="en"> <head><meta charset="UT ...
- jquery仿凡客诚品图片切换的效果实例代码
清远大学城网(http://www.qydxc.com) 是一个不错的图片切换效果,就是可以图片带文字说明的折叠效果,下面我来给大家推荐两个版本的效果,有需要了解的朋友可参考. 图片版的效果代码如下复 ...
- php文件下载到服务器代码,PHP文件下载实例代码浅析
文件下载的功能对一个网站而言基本上是必备的了,今天就来看看php是如何实现文件下载的吧. 无控制类型 这里说的无控制类型是指 没有添加php代码控制的资源可以被直接下载的那些类型.一般而言,压缩文件. ...
最新文章
- Hinton:人类就是机器,绝妙的机器
- 3D Computer Grapihcs Using OpenGL - 04 First Triangle
- blockhouses
- 16、分布式文档系统--document的_source元数据以及定制返回结果解析(来自学习资料+自己整理)
- 史上最详细的XGBoost实战
- HTTP 数据包头解析
- Opencv和C++实现canny边缘检测
- 谷歌提出深度CNN模型NIMA:帮你挑选清晰且有美感的图片
- 分享SCI写作经验和一些工具
- NYOJ1282部分和问题--DFS剪枝入门
- 编译好的C一执行就崩溃,第一句输出都没有,是怎么回事?
- 树上启发式合并算法概述及习题
- Linux杂谈之unzip命令
- 利用ADO连接数据库时,Rs.recordcount总是返回-1,解决办法
- 利用文心大模型制作多功能机器人
- Oracle数据库:创建和删除视图view,简单和复杂视图,内建视图,topN分析,oracle分页查询
- 用python做一个表白软件手机版_用python写一个5.20的表白小程序吧
- 燕之屋三年半消耗近7亿,难逃“智商税”风波
- 天翼云 杭州 云主机(VPS) 性能评测
- Eclipse插件6
热门文章
- linux运维命令日志管理,Linux运维实战第二天:Linux基础命令之文件处理命令
- 如何导出android studio程序,(技术)聊聊Android Studio 如何生成Jar
- php判断值是否为空然后定义,判断php变量是不是定义,是否为空
- java file list listfiles,Java File listFiles()用法及代码示例
- 数据结构之栈与递归的应用(八皇后递归解法)
- 2d Laser 和 Odomter 内外参数标定工具原理及使用方法
- Redis模式对比:主从模式 VS 哨兵sentinel模式 VS Redis cluster模式
- ExecutorService--线程池
- MySQL 瓶颈分析及优化
- BZOJ 4736 温暖会指引我们前行 LCT+最优生成树+并查集