zoukankan      html  css  js  c++  java
  • ajax处理文件下载

    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标签实现文件下载

  • 相关阅读:
    12分布式文件存储
    编写高性能java程序
    Linux常用命令
    jQuery控制文本框只能输入数字
    在代码中动态绑定TabHost内容的两种方法(Android)
    maven快速使用教程
    silverlight利用代码添加带图标的treeviewItem
    快速认识ESB
    代码中控制TabHost中标签Tab的高度和宽度(Android)
    Maven2快速认识和使用
  • 原文地址:https://www.cnblogs.com/become/p/5976423.html
Copyright © 2011-2022 走看看