不能使用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. dotnet总结

    初衷: 搞了几年.Net ,一直没在博客园做过系统的总结,并打算按照下面的结构来写 语言层面 类型系统 [查看]: https://www.cnblogs.com/francisXu/p/136027 ...

  2. git拉取新分支、删除分支、修改远程分支

    1.拉取新分支 git checkout master           切换到master分支 git pull                                   更新到最新代码 ...

  3. 解决MSsql 中文变成"?"的问题

    ALTER DATABASE IMStest SET SINGLE_USER WITH ROLLBACK IMMEDIATE; ALTER database IMStest collate Chine ...

  4. C#/VB.NET 如何在 Word 文档中添加页眉和页脚

    页眉位于文档中每个页面的顶部区域,常用于显示文档的附加信息,可以插入时间.图形.公司微标.文档标题.文件名或作者姓名等:页脚位于文档中每个页面的底部的区域,常用于显示文档的附加信息,可以在页脚中插入文 ...

  5. springboot跳转页面404的问题

    今天测试的时候出现了这个问题: Cannot forward to error page for request [/] as the response has already been commit ...

  6. 使用clipboard.js复制文字+图片到微信后图片不显示问题处理

    使用clipboard.js复制文字 +图片,粘贴到微信不显示图片,而QQ可以. 解决方案:图片链接使用http,不要使用https. 使用clipboard.js实现复制功能 文字 +图片到微信客户 ...

  7. Apache druid笔记

    Apache Duid学习笔记2 1.历史节点的查询效率与内存数据比成正比,内存越大则读取磁盘的次数越少, 历史节点内存越大总数据量越小则查询速度越快. 2.缓存机制可以选择外部和内部缓存,外部缓存如 ...

  8. (性能测试笔记)逻辑IO和物理IO的区别

    IO性能对于一个系统的影响是至关重要的. 一个系统经过多项优化以后,瓶颈往往落在数据库:而数据库经过多种优化以后,瓶颈最终会落到IO.而IO性能的发展,明显落后于CPU的发展.Memchached也好 ...

  9. Selenium私房菜系列8 -- 玩转Selenium Server【OO】

    本篇主要是想更进一步介绍Selenium Server的工作原理,这次我们从Selenium Server的交互模式开始. 在<第一个Selenium RC测试案例>中,我们以命令&quo ...

  10. C#连Mysql数据库报错 SSL Connection error

    MySql.Data.MySqlClient.MySqlException (0x80004005): SSL Connection error. ---> System.AggregateEx ...