不能使用ajax进行下载文件的操作,具体原因需百度

前端页面,在GridView里面使用模板列,模板列放a标签

  1. <cimesui:cimesGridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="left"
  2. DataKeyNames="ID" OnRowDataBound="GridView1_RowDataBound" OnRowDeleted="GridView1_RowDeleted"
  3. OnRowDeleting="GridView1_RowDeleting" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
  4. <Columns>
  5. <asp:CommandField HeaderText="操作" ShowDeleteButton="True" >
  6. <ItemStyle HorizontalAlign="Center" />
  7. </asp:CommandField>
  8. <asp:TemplateField HeaderText="" HeaderStyle-Width="200px">
  9. <ItemTemplate>
  10. <a href="javascript:;" onclick="return GetSelectedRow(this)">下载</a>
  11. </ItemTemplate>
  12. </asp:TemplateField>
  13. <asp:BoundField DataField="ID" HeaderText="ID" />
  14. <asp:BoundField DataField="filename" HeaderText="文件名" />
  15. <asp:BoundField DataField="filesize" DataFormatString=" {0} Byte" HeaderText="文件尺寸">
  16. <ItemStyle HorizontalAlign="Right" />
  17. </asp:BoundField>
  18. </Columns>
  19. <EmptyDataTemplate>
  20. 没有附档存在!
  21. </EmptyDataTemplate>
  22. </cimesui:cimesGridView>
  1. //前端页面的GetSelectedRow方法
  2. <script type="text/javascript">
  3. //获取选中行的ID,并打开一般处理程序页面
  4. function GetSelectedRow(UserLink) {
  5. var row = UserLink.parentNode.parentNode;
  6. var id = row.cells[2].innerHTML;
  7. window.location.href = "../Function/IQCGetUploadFile.ashx?id=" + id+"";
  8. }
  9. </script>
  1. //一般处理程序(后缀名.ashx) IQCGetUploadFile.ashx 页面代码
  2.  
  3. public class IQCGetUploadFile : IHttpHandler
  4. {
  5. public void ProcessRequest(HttpContext context)
  6. {
  7. try
  8.  
  9. {
  10. //string ID = context.Request["id"].ToString();
  11. string ID = context.Request.QueryString["id"];
  12. string filePath = InspectDAC.GetFilePath(ID);
  13. string fileName = filePath.Substring(filePath.LastIndexOf('\\')).Substring(1);
  14.  
  15. byte[] output = InspectDAC.OutputAttachmentFile(ID);
  16. //以字符流的形式下载文件
  17. FileStream fs = new FileStream(filePath, FileMode.Open);
  18.  
  19. byte[] bytes = new byte[(int)fs.Length];
  20. fs.Read(bytes, 0, bytes.Length);
  21. HttpContext.Current.Response.Clear();
  22. fs.Close();
  23. HttpContext.Current.Response.ContentType = "application/octet-stream";
  24. //通知浏览器下载文件而不是打开
  25. HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
  26. HttpContext.Current.Response.BinaryWrite(bytes);
  27. HttpContext.Current.Response.WriteFile(filePath);
  28. HttpContext.Current.Response.Flush();
  29. //context.Response.End();
  30. HttpContext.Current.ApplicationInstance.CompleteRequest();
  31. }
  32.  
  33. catch (Exception ex)
  34. {
  35. context.Response.Write(ex.Message);
  36. }
  37.  
  38. }
  39.  
  40. public bool IsReusable
  41. {
  42. get
  43. {
  44. return false;
  45. }
  46. }
  47. }

C# 在GridView里面使用a标签下载文件(图片)的更多相关文章

  1. ligerUI利用a标签下载文件

    一.利用WriteFile实现下载,并验证文件是否存在,将指定的文件直接写入HTTP响应输出流.注意:大型文件使用此方法可能导致异常.可以使用此方法的文件大小取决于 Web 服务器的硬件配置. (1) ...

  2. 使用a标签下载文件,而不是直接打开,使用属性 download

    有的时候,下载的链接文件如果是普通文件类型,如txt,我们下载文件的时候,有的浏览器不会弹出下载框,.而是直接打开了该文件. 针对这种情况,我们只需要在a标签上加上download属性即可显示下载框. ...

  3. 应用HTML5 标签下载文件

    使用HTML5 <a>标签可以直接下载文件而不用通过后台action. <a href="/uploadfolder/xxxx.txt">点击下载</ ...

  4. WPF带cookie get/post请求网页,下载文件,图片,可保持会话状态

    直接写成啦一个MyNet.cs类方便使用 get/post方法请求 //get请求 MyNet.SendRequest("http://www.baidu.com"); //pos ...

  5. axios通过post请求下载文件/图片

    我们平常下载文件一般都是通过get请求直接访问进行下载, 但是当有特殊情况如权限控制之类的会要求我们通过post请求进行下载,这时就不一样了, 具体方法是通过协调后端,约定返回的文件流,请求的resp ...

  6. web页面中a标签下载文件包含中文下载失败的解决

    之前用到的文件下载,文件名都是时间戳的形式或者英文名.下载没有问题.后来附件有中文后写在页面是下面效果,点击下载,下载失败. 对应链接拿出来.是如下效果 之前用了各种其他办法都不理想,比如转义什么的. ...

  7. (网页)a标签下载

    HTML <a> download 属性 <a href="/images/myw3schoolimage.jpg" download="w3logo& ...

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

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

  9. jQuery --- 利用a标签的download属性下载文件!

    最近遇到一个项目,需要有点击下载文件的功能. 由于文件格式是多种的,对于 rar / zip / rtf / doc / xlsx / jpg等. 点击下载有的是直接跳转到后进行下载,但有的是打开进行 ...

  10. 下载文件 通过a 标签 请求某个servlet进行下载的

    下载文件 通过a 标签 请求某个servlet进行下载的

随机推荐

  1. Vulhub 漏洞学习之:Django

    Vulhub 漏洞学习之:Django 目录 Vulhub 漏洞学习之:Django 1 Django debug page XSS漏洞(CVE-2017-12794) 1.1 漏洞利用过程 2 Dj ...

  2. Windows 注册表是什么

    注册表的概念 历史发展 在 Windows 3.x 操作系统中,注册表是一个极小文件,其文件名为 Reg.dat,里面只存放了某些文件类型的应用程序关联,大部分的设置是被放在 win.ini.syst ...

  3. CSS transform: scale()

    前言 transform属性允许你旋转,缩放,倾斜或平移给定元素.其中scale(x, y)就是实现元素缩放的属性值. scale(x, y)的 x 乘以原本元素的 x:y 乘以原本的元素 y,就可以 ...

  4. GPS地图生成01之概述

    图片来源: Author: Tang Email: jianbo.tang@csu.edu.cn

  5. helm在k8s上部署Elasticsearch和Kibana

    前提 在win上安装docker desktop,没有网络限制,而且,打开kubernetes之后,很快就安装启动好了. 在win上安装scoop,有网络限制,需要访问github raw的文件内容, ...

  6. MySQL 查询常用操作(0) —— 查询语句的执行顺序

    MySQL中明确查询语句的执行顺序极其重要,了解执行顺序才不至于犯一些简单错误,例如having 后面是否可以使用 select 中重命名的列名等问题.另外SQL中实际使用最频繁的就是查询(Quein ...

  7. Vulnhub:CK-00靶机

    kali:192.168.111.111 靶机:192.168.111.196 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --script=http-enum 192.168. ...

  8. lg9018题解

    #include<bits/stdc++.h> using namespace std; #define N 2000010 #define int long long #define m ...

  9. 前端JavaScript深拷贝的三种方法,看了不后悔!!!

    深拷⻉ 深拷⻉开辟⼀个新的栈,两个对象属完成相同,但是对应两个不同的地址,修改⼀个对象的属性,不会 改变另⼀个对象的属性 常⻅的深拷⻉⽅式有: _.cloneDeep() jQuery.extend( ...

  10. VS2022 17.1.6在windows10下打开winform设计器报timed out while connecting to named pipe错误

    .net 6.0的项目,vs2022 17.1.6在windows10下打开winform设计器报timed out while connecting to named pipe错误,同样的项目在wi ...