不能使用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标签下载文件(图片)的更多相关文章

  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. 微信小程序之permission字段

    最近查看我发布的小程序出了问题,没有显示天气,打开文件查看,出现如下提示 那么如何解决呢 在 app.json 里面增加 permission 属性配置然后在app.json中添加代码 整个app.j ...

  2. 05#Web 实战:可拖拽的侧边栏

    效果演示图 可拖拽的左.右侧边栏的使用情况还是挺多的,博客园后台管理的左侧边栏就可以拖拽哟!效果演示如下图: HTML 代码 <div class="container"&g ...

  3. 基于PostGIS使用GeoServer发布数据量大的GPS轨迹路线图

    1. 引言 人类在行走或者驾驶过程中产生的GPS轨迹,是道路的一种采样,根据GPS轨迹路线,我们可以推知道路的存在,根据轨迹的密度,可以推知道路的热度以及重要性.如何才能在地图中显示大量的轨迹,这是一 ...

  4. pat乙级1022 D进制的A+B

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #de ...

  5. video.js 注销上一个对象并重新初始化

    .dispose()没有用,不知道为什么. 后来我们为video绑定不同的id,还是随机数,每次初始化都用新video的id.并不建议这样做,但是我们也没有更好的办法了.

  6. 安装pytorch报错 ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device

    windos安装,报错如下 看了不少回答,大概是缓存和内存满了 我的C盘只给了70G,然后意外发现只剩下3G多了,先用系统自带的清理工具清理了一下,然后腾讯电脑管家"工具箱"中的& ...

  7. redis运维与管理

    redis内存存储,速度极快 丰富的附件功能 1.持久化功能:降存储在内存的数据保存到硬盘 2.发布与订阅:将消息同时分发给多个客户端 3.过期键功能:为键设置一个过期时间,让它在指定的时间之后自动被 ...

  8. HTML初步了解

    W3C:万维网联盟,是国际化最著名的标准化组织. HTML:(Hyper Text Markup Language )超文本标记语言,网页编程语言,用于定义文档的内容和结构. CSS:(Cascadi ...

  9. 记录C#学习过中看到的文章

    1.DataRow 转实体类 https://www.cnblogs.com/macT/p/10878863.html https://www.cnblogs.com/yangboyu/archive ...

  10. c++ 时间类型详解 time_t(转)

    原文链接:https://blog.csdn.net/love_gaohz/article/details/6637625 Unix时间戳(Unix timestamp),或称Unix时间(Unix ...