Jquery Ajax实现文件下载实例代码

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

jquery download函数:

 代码如下 复制代码
// 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的图片代码:

 代码如下 复制代码

<img onclick="GetSrcFromSvc('" + name + "')" src="" + imgurl + "" //>
GetSrcFromSvc函数实现调用:

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

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

微软为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);
//   ////??uffer 中的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 流方式下载:

 代码如下 复制代码
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。

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

 

时间: 2024-09-29 14:54:45

Jquery Ajax实现文件下载实例代码的相关文章

Jquery + Ajax调用webService实例代码(asp.net)_jquery

webService中要实现ajax调用,则要加这句代码: // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释. [System.Web.Script.Services.ScriptService] 代码下载 /201008/yuanma/WebService2.rar 复制代码 代码如下: //无参数调用 $(document).ready(function() { $('#btn1').click(function() { $.ajax({ typ

php jquery ajax用户登录实例代码

php Jquery 无刷新登录,自己写的一个很简单的 加了一个判断就是如果是已经登录的,刷新后还是显示的登录状态 登录页面文件 html页面  代码如下 复制代码 <script type="text/javascript" src="jquery-1.4.3.js" mce_src="jquery-1.4.3.js"></script> <script type="text/javascript&quo

jQuery Ajax File Upload实例源码_jquery

本文实例为大家分享了jQuery Ajax File Upload实例源码,供大家参考,具体内容如下 项目结构 Default.aspx Upload.aspx Scripts/- style.css 效果图   客户端html代码 <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="UploadFile.aspx.vb" Inherits="Web.UploadF

Ajax验证用户名实例代码_AJAX相关

用Ajax验证用户名代码如下所示: 接口: get guestbook/index.php m : index a : verifyUserName username : 要验证的用户名 返回 { code : 返回的信息代码 0 = 没有错误,1 = 有错误 message : 返回的信息 具体返回信息 } js oUsername1.onblur = function() { //失去焦点的时候,把当前用户名给后端去验证 ajax('get', 'guestbook/index.php',

基于jQuery实现返回顶部实例代码_jquery

效果图展示如下所示: 使用方法: 只需引用jQuery库和YesTop插件,然后一句代码就可以实现返回顶部: 引用代码: <script type="text/javascript" src="http://hovertree.com/ziyuan/jquery/jquery-1.11.3.min.js"></script> <script type="text/javascript" src="http:

jquery+ajax调用webservice 实例

jquery+ajax调用webservice 实例 本文章是利用了asp教程.net的webservice 与jquery 的ajax来做一个 ajax实例 <script language="网页特效"> $("document").ready(function(){        $("#mmlog").append("data");  //这句有效,页面上指定位置有数据        $("#bt

分享Ajax创建简单实例代码_AJAX相关

XmlHttp是一套可以在Javascript.VbScript.Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API.XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面.几乎所有的浏览器都支持XMLHttpRequest对象,它是Ajax应用的核心技术. js代码如下: <html> <head> <title> New Document </title> <meta charset="utf

js+jquery title 提示层实例代码

提示:您可以先修改部分代码再运行 js+jquery title 提示层实例代码 title提示层实例 用jQuery在IE6下实现css的max-width属性 用jQuery在IE6下实现css的max-width属性 用jQuery在IE6下实现css的max-width属性 用jQuery在IE6下实现css的max-width属性 提示:您可以先修改部分代码再运行

Ajax 传递JSON实例代码

前面的话 虽然ajax全称是asynchronous javascript and XML.但目前使用ajax技术时,传递JSON已经成为事实上的标准.因为相较于XML而言,JSON简单且方便.本文将上一篇中的实例进行改写,以JSON的方式来进行数据传递 前端页面 <!-- 前端页面 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"