ajax中处理文件下载,可能大数会遇到我和一样的问题,什么问题呢?就是下载程序执行了,但是浏览器没有任何下载操作,这是为什么呢?

那是因为response原因,一般请求浏览器是会处理服务器输出的response,例如生成png、文件下载等,然而ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的,说白点就是js无法调用到浏览器的下载处理机制和程序。

string _path = @"f:/myMergeCell.xls";
FileStream fileStream = new FileStream(_path, FileMode.Open);
int fileContent = (int)fileStream.Length;
byte[] byData = new byte[fileContent];
fileStream.Read(byData, 0, fileContent);
fileStream.Close();
context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}.xls", "测试表格_myMergeCell"));
context.Response.BinaryWrite(byData);
context.Response.Flush();
context.Response.End();

这是正常的下载文件代码,如果直接在页面cs文件写此段代码,肯定是能下载的。但是在ajax就会出现代码执行了,但是浏览器没有任何效果。

那么该怎么解决呢?

就是在调用的地方不用使用ajax方式调用,原因在上面已说明:

解决方案一:可以使用jquery创建表单并提交实现文件下载

解决方案二:也可以直接使用a标签实现文件下载

ajax处理文件下载的更多相关文章

  1. 由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载,但是ajax实现的文件下载并不能触发浏览器的下载文件弹出框,这里通过模拟表单提交实现同样的效果。

    由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载(这样的话ajax可以传递不同的参数),但是ajax实现的文 ...

  2. Jquery+asp.net实现Ajax方式文件下载实例代码

    如果文件中,需要下载一个文件,一般用超级链接的方式即可. 但是如果是图片,浏览器会默认打开图片浏览,不是实现下载. 考虑可以使用jquery ajax提交form请求的方式. jquery downl ...

  3. Ajax请求文件下载操作失败的原因和解决办法

    使用Poi做excel表格导出功能,第一个想到的就是用Ajax来发送请求,但是Ajax和后台代码都执行了,就是无法下载文件. 前台代码 function exportExl(){ var form = ...

  4. ajax实现文件下载

    前台: <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> ...

  5. Ajax框架---dwr的用法

    通常使用Ajax时用的都是jQuery框架,现在公司的框架里用的都是dwr.我觉得dwr和jQuery中的ajax用法差不多,看起来也很像. 一.简介 百度百科上对dwr的描述: DWR采取了一个类似 ...

  6. ajax文件下载

    今天想做一个csv导出,想做ajax下载 JQuery的ajax函数的返回类型只有xml.text.json.html等类型,没有“流”类型,所以要实现ajax下载,不能够使用相应的ajax函数进行文 ...

  7. Ajax请求ashx一般处理程序实现文件下载

    具体功能为,在文件数据列表中选择一行,点击表格上方的下载按钮,下载文件.由于表格中不包含文件路径,只能取到在数据库表中的ID,所以具体实现就是这样:首先点击一行,获取点击的一行数据的ID,用Ajax传 ...

  8. Ajax 生成流文件下载 以及复选框的实现

    JQuery的ajax函数的返回类型只有xml.text.json.html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载.但可以用js生成一个form, ...

  9. H5+Ajax+WebApi实现文件下载(进度条,多文件)

    前言 踩过的坑 1.WebAPI跨域 2.Jquery ajax低版本不支持XHR 2功能 3.Jquery ajax不支持Deferred的process事件 4.IE下文件名乱码问题 功能实现 & ...

随机推荐

  1. vc让界面保持最上层

    vc让界面保持最上层.事实上就一个函数就ok了, ::SetWindowPos(AfxGetMainWnd()->m_hWnd,HWND_TOPMOST,-1,-1,-1,-1,0);

  2. 火币网API文档——REST API 错误码

    错误码 行情 API 错误码 错误码 描述 bad-request 错误请求 invalid-parameter 参数错 invalid-command 指令错 code 的具体解释, 参考对应的er ...

  3. 网站分析参数(实例分析)SimilarWeb插件参数

      网站分析参数(实例分析)SimilarWeb插件参数 那么这些指标是什么意思呢? SimilarWeb Rank:类似网站排名Global Rank:全球网站排名第三栏一般是类别,大概网站从事范围 ...

  4. 小睿开始呼叫用户,然后FS怎么跟用户交互的整个流程原理

    学习从小睿开始呼叫用户,然后FS怎么跟用户交互的整个流程原理;     1.小睿向欣方新发起呼叫请求;     2.欣方新可以通过线路发起SIP协议请求,来呼叫用户;     3.当用户接通后,将建立 ...

  5. python的执行顺序

    为了区分是主动执行(如python test.py)还是被动调用(如import test),python用__name__来进行标识. 当主动执行时,__name__为__main__,当被调用时, ...

  6. Centos7安装jdk1.8并查找jdk安装目录

    安装之前先检查一下系统有没有自带open-jdk rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果没有输入信息表示没有安装. 如果安装 ...

  7. PHP注册器模式

    [Register.class.php] <?php /** * 注册器模式 * 全局共享和交换对象 */ class Register { protected static $objects; ...

  8. linux中 /dev/null命令

    /dev/null :代表空设备文件 >  :代表重定向到哪里,例如:echo "123" > /home/123.txt1  :表示stdout标准输出,系统默认值是 ...

  9. solr创建业务域以及指定中文分析器IK

    第一步:把中文分析器添加到工程中. 1.把IKAnalyzer2012FF_u1.jar添加到solr工程的lib目录下 2.把扩展词典.配置文件放到solr工程的WEB-INF/classes目录下 ...

  10. GRU门控制循环单元【转载】

    转自:https://www.infoq.cn/article/sliced-recurrent-neural-networks 1.门控循环单元 GRU GRU 由 reset gate r 和 u ...