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进行下载的
随机推荐
- SQL 注入之一:Mysql 数据库(搞懂这篇就够了)
郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全人人有责,共同维护网络文明和谐. SQ ...
- 代码随想录算法训练营day13
基础知识 二叉树基础知识 二叉树多考察完全二叉树.满二叉树,可以分为链式存储和数组存储,父子兄弟访问方式也有所不同,遍历也分为了前中后序遍历和层次遍历 Java定义 public class Tree ...
- LeetCode-357 统计各位数字都不同的数字个数
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-numbers-with-unique-digits 题目描述 给你一个整数 n ,统 ...
- Electron 打包 (electron-builder)
本文只测试了Windows 10 下打包Windows基础安装包 更多花哨的配置,请戳官方文档 https://www.electron.build/ www.electron.build/ 构建基 ...
- 后台Mysql存储过程调用
https://blog.csdn.net/weixin_43695211/article/details/127883536
- EF core 反向工程 连接字符串
Scaffold-DbContext 'Data Source=.;Initial Catalog=DB;User ID=sa;Password=1;Integrated Security=true; ...
- 将 ChatGPT 接入 Zabbix 为告警提供修复建议(对接钉钉)
1.如果接企业微信请参考下面的文章 https://www.txisfine.cn/archives/9c078bb7.html 感谢上述文章的作者提供的思路 ChatGPT 是最近很火的 AI 智能 ...
- 网络储存服务ip-san搭建
简单的介绍一下SAN(存储区域网络存储区域网络和SAN协议,简称SAN),它是一种高速网络实现计算机与存储系统之间的数据传输.常见的分类是FC-SAN和IP-SAN两种.FC-SAN通过光纤通道协议转 ...
- python 读取xls文件
import xlrdfrom xlrd import xldate_as_tuplefrom IPScriptUtil import *from serverTest import *import ...
- layui富文本编辑器提交时无法获取到值
使用layui的富文本提交时一直获取不到值,仔细检查代码之后发现是没有绑定textarea,要将编辑器中的内容同步到textarea中. 先在lay-verify="名字"中输入一 ...