C# 在GridView里面使用a标签下载文件(图片)
不能使用ajax进行下载文件的操作,具体原因需百度
前端页面,在GridView里面使用模板列,模板列放a标签
- <cimesui:cimesGridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="left"
- DataKeyNames="ID" OnRowDataBound="GridView1_RowDataBound" OnRowDeleted="GridView1_RowDeleted"
- OnRowDeleting="GridView1_RowDeleting" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
- <Columns>
- <asp:CommandField HeaderText="操作" ShowDeleteButton="True" >
- <ItemStyle HorizontalAlign="Center" />
- </asp:CommandField>
- <asp:TemplateField HeaderText="" HeaderStyle-Width="200px">
- <ItemTemplate>
- <a href="javascript:;" onclick="return GetSelectedRow(this)">下载</a>
- </ItemTemplate>
- </asp:TemplateField>
- <asp:BoundField DataField="ID" HeaderText="ID" />
- <asp:BoundField DataField="filename" HeaderText="文件名" />
- <asp:BoundField DataField="filesize" DataFormatString=" {0} Byte" HeaderText="文件尺寸">
- <ItemStyle HorizontalAlign="Right" />
- </asp:BoundField>
- </Columns>
- <EmptyDataTemplate>
- 没有附档存在!
- </EmptyDataTemplate>
- </cimesui:cimesGridView>
- //前端页面的GetSelectedRow方法
- <script type="text/javascript">
- //获取选中行的ID,并打开一般处理程序页面
- function GetSelectedRow(UserLink) {
- var row = UserLink.parentNode.parentNode;
- var id = row.cells[2].innerHTML;
- window.location.href = "../Function/IQCGetUploadFile.ashx?id=" + id+"";
- }
- </script>
- //一般处理程序(后缀名.ashx) IQCGetUploadFile.ashx 页面代码
- public class IQCGetUploadFile : IHttpHandler
- {
- public void ProcessRequest(HttpContext context)
- {
- try
- {
- //string ID = context.Request["id"].ToString();
- string ID = context.Request.QueryString["id"];
- string filePath = InspectDAC.GetFilePath(ID);
- string fileName = filePath.Substring(filePath.LastIndexOf('\\')).Substring(1);
- byte[] output = InspectDAC.OutputAttachmentFile(ID);
- //以字符流的形式下载文件
- FileStream fs = new FileStream(filePath, FileMode.Open);
- byte[] bytes = new byte[(int)fs.Length];
- fs.Read(bytes, 0, bytes.Length);
- HttpContext.Current.Response.Clear();
- fs.Close();
- HttpContext.Current.Response.ContentType = "application/octet-stream";
- //通知浏览器下载文件而不是打开
- HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
- HttpContext.Current.Response.BinaryWrite(bytes);
- HttpContext.Current.Response.WriteFile(filePath);
- HttpContext.Current.Response.Flush();
- //context.Response.End();
- HttpContext.Current.ApplicationInstance.CompleteRequest();
- }
- catch (Exception ex)
- {
- context.Response.Write(ex.Message);
- }
- }
- public bool IsReusable
- {
- get
- {
- return false;
- }
- }
- }
C# 在GridView里面使用a标签下载文件(图片)的更多相关文章
- ligerUI利用a标签下载文件
一.利用WriteFile实现下载,并验证文件是否存在,将指定的文件直接写入HTTP响应输出流.注意:大型文件使用此方法可能导致异常.可以使用此方法的文件大小取决于 Web 服务器的硬件配置. (1) ...
- 使用a标签下载文件,而不是直接打开,使用属性 download
有的时候,下载的链接文件如果是普通文件类型,如txt,我们下载文件的时候,有的浏览器不会弹出下载框,.而是直接打开了该文件. 针对这种情况,我们只需要在a标签上加上download属性即可显示下载框. ...
- 应用HTML5 标签下载文件
使用HTML5 <a>标签可以直接下载文件而不用通过后台action. <a href="/uploadfolder/xxxx.txt">点击下载</ ...
- WPF带cookie get/post请求网页,下载文件,图片,可保持会话状态
直接写成啦一个MyNet.cs类方便使用 get/post方法请求 //get请求 MyNet.SendRequest("http://www.baidu.com"); //pos ...
- axios通过post请求下载文件/图片
我们平常下载文件一般都是通过get请求直接访问进行下载, 但是当有特殊情况如权限控制之类的会要求我们通过post请求进行下载,这时就不一样了, 具体方法是通过协调后端,约定返回的文件流,请求的resp ...
- web页面中a标签下载文件包含中文下载失败的解决
之前用到的文件下载,文件名都是时间戳的形式或者英文名.下载没有问题.后来附件有中文后写在页面是下面效果,点击下载,下载失败. 对应链接拿出来.是如下效果 之前用了各种其他办法都不理想,比如转义什么的. ...
- (网页)a标签下载
HTML <a> download 属性 <a href="/images/myw3schoolimage.jpg" download="w3logo& ...
- 由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载,但是ajax实现的文件下载并不能触发浏览器的下载文件弹出框,这里通过模拟表单提交实现同样的效果。
由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载(这样的话ajax可以传递不同的参数),但是ajax实现的文 ...
- jQuery --- 利用a标签的download属性下载文件!
最近遇到一个项目,需要有点击下载文件的功能. 由于文件格式是多种的,对于 rar / zip / rtf / doc / xlsx / jpg等. 点击下载有的是直接跳转到后进行下载,但有的是打开进行 ...
- 下载文件 通过a 标签 请求某个servlet进行下载的
下载文件 通过a 标签 请求某个servlet进行下载的
随机推荐
- Vulhub 漏洞学习之:Django
Vulhub 漏洞学习之:Django 目录 Vulhub 漏洞学习之:Django 1 Django debug page XSS漏洞(CVE-2017-12794) 1.1 漏洞利用过程 2 Dj ...
- Windows 注册表是什么
注册表的概念 历史发展 在 Windows 3.x 操作系统中,注册表是一个极小文件,其文件名为 Reg.dat,里面只存放了某些文件类型的应用程序关联,大部分的设置是被放在 win.ini.syst ...
- CSS transform: scale()
前言 transform属性允许你旋转,缩放,倾斜或平移给定元素.其中scale(x, y)就是实现元素缩放的属性值. scale(x, y)的 x 乘以原本元素的 x:y 乘以原本的元素 y,就可以 ...
- GPS地图生成01之概述
图片来源: Author: Tang Email: jianbo.tang@csu.edu.cn
- helm在k8s上部署Elasticsearch和Kibana
前提 在win上安装docker desktop,没有网络限制,而且,打开kubernetes之后,很快就安装启动好了. 在win上安装scoop,有网络限制,需要访问github raw的文件内容, ...
- MySQL 查询常用操作(0) —— 查询语句的执行顺序
MySQL中明确查询语句的执行顺序极其重要,了解执行顺序才不至于犯一些简单错误,例如having 后面是否可以使用 select 中重命名的列名等问题.另外SQL中实际使用最频繁的就是查询(Quein ...
- Vulnhub:CK-00靶机
kali:192.168.111.111 靶机:192.168.111.196 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --script=http-enum 192.168. ...
- lg9018题解
#include<bits/stdc++.h> using namespace std; #define N 2000010 #define int long long #define m ...
- 前端JavaScript深拷贝的三种方法,看了不后悔!!!
深拷⻉ 深拷⻉开辟⼀个新的栈,两个对象属完成相同,但是对应两个不同的地址,修改⼀个对象的属性,不会 改变另⼀个对象的属性 常⻅的深拷⻉⽅式有: _.cloneDeep() jQuery.extend( ...
- 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 ...