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

  • 相关阅读:
    C# 中==和Equal的区别
    3dmath复习随笔
    3dmax学习资料记录
    [官方教程] Unity 5 BLACKSMITH深度分享
    [技术] [插件精选] 炫酷粒子特效(下)
    Unity3D总结:关于射线碰撞
    Unity3D将来时:IL2CPP(上)
    3DMAX 9 角色建模3 uv展开
    php,c# hamsha1
    U3D 的一些基础优化
  • 原文地址:https://www.cnblogs.com/become/p/5976423.html
Copyright © 2011-2022 走看看