用页传值方式解决模态窗口的Response.WriteFile文件下载
Response.Buffer = true;
Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";
string nocache = "<meta http-equiv=\"pragma\" content=\"no-cache\">\n";
nocache += "<meta http-equiv=\"cache-control\" content=\"no-cache, must-revalidate\">\n";
nocache += "<meta http-equiv=\"expires\" content=\"WED, 26 Feb 1997 08:21:57 GMT\">\n";
Response.Write(nocache);
可因为一个需求,需要在模态窗口中添加附件的下载功能,因为对附件个数的不确定,所以刚开始的解决方法是直接将附件路径写在<a href></a>里,单击直接下载,使用过程中遇到了问题,譬如,当文件是图片或者是TXT文件是,IE浏览器是直接在线打开的.而我要求是点击后提示是否保存或者打开(注:模态窗口禁用了右键,所以没有另存为).
怎样才能让IE出现提示呢?我就想到了Response.WriteFile(),但是,因为我的是模态窗口,我去掉了页面缓存.这样就没办法实现了.废话不多说了,最后我的解决方法是利用页面传值方式(简单吧,就怕没想到),将文件路径和文件名传到另一个页面,然后用Request.QueryString获取值.
下面代码分别是附件页面和下载页面.
for(int j =0;j<dt.Rows.Count;j++)
{
string strpath = Server.UrlEncode(GlobalVar.UploadPath+ "/" +dt.Rows[j]["Filename"].ToString());
string strfilename = Server.UrlEncode(dt.Rows[j]["Filename"].ToString());
string strUrl = "FileDownLoad.aspx?pathname="+strpath + "&filename="+ strfilename;
slink += "<TR><TD><a href=\""+ strUrl +"\" target=\"_blank\")>"+ dt.Rows[j]["Filename"].ToString() +"</a>    </TD><TD>"+dt.Rows[j]["Explain"].ToString()+"</TD></TR>";
}
其中的dt 是附件表,GlobalVar.UploadPath是附件地址,Server.UrlEncode是为了中文附件名的传值.
FileDownLoad.aspx的.cs文件如下(FileDownLoad没有用BasePage的)
{
// 在此处放置用户代码以初始化页面
string sfilePath = Request.QueryString["pathname"];
string sfilename = Request.QueryString["filename"];
Response.Clear();
Response.Charset = "utf-8";
Response.Buffer= true;
this.EnableViewState = false;
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(sfilename, System.Text.Encoding.UTF8));
Response.WriteFile(sfilePath);
Response.Flush();
Response.Close();
Response.End();
}
转载于:https://www.cnblogs.com/zjy/archive/2006/10/16/529966.html
用页传值方式解决模态窗口的Response.WriteFile文件下载相关推荐
- Selenium firefox浏览器修改为标签页打开方式的各种坑
需求: 今天有位朋友遇到一个梗,selenium使用firefox打开多个网页时,firefox总是以新窗口的方式打开:而这位朋友的需求是以标签页的方式打开新页面. 1.新窗口方式: 2.新标签页方式 ...
- JBox - 模态窗口,工具提示和消息 jQuery 插件
jBox 是一个强大而灵活的 jQuery 插件,可以帮助实现模态窗口,工具提示,通知和更多的功能.你可以使用 jQuery 选择器轻松地添加工具提示效果到元素上,您可以以同样的方式设置模态窗口.该库 ...
- Jsp传值方式(乱码问题的解决)
一,Jsp页面的三种传值方式 1,地址栏传值(get提交) 2,a标签传值 (get提交) 3,表单提交 (默认get方式提交) Get/post取中文都会乱码. Jsp的内置对象request取值. ...
- bootstrap 模态窗口 第二次无法加载js 的解决办法
背景 在使用模态窗口的时打开第一次是没有问题的 ,一切正常,在打开第二次的时候,没法加载相应的js 原因 bootstrap 使用模态窗口时候使用 $("#McustomerAdd" ...
- 关于模态窗口(showModalDialog)的专题【收藏】
关于模态窗口(showModalDialog)的专题[收藏] 转自:http://www.cnblogs.com/donnet/articles/1039509.html 1.模态窗口的打开,mode ...
- 来个模态kuang_关于模态窗口(showModalDialog)的专题【收藏】
转自:http://www.cnblogs.com/donnet/articles/1039509.html 1.模态窗口的打开,model window open 2.模态窗口的关闭,model w ...
- asp.net模态窗口返回值
个人感觉模态窗口在做网站的时候,使用到的比较少,前段时间在做项目时要实现以模态窗口传值和接收返回值, 模态窗口传值实现比较简单,但是做好后发现在Chrome浏览器中接收不到返回值,修改好Chrome浏 ...
- eazyui ajax传值,jquery easyui ajax data属性传值方式
$.ajax({ url:url, type:'post', data:data, dataType:'json', contentType: "application/x-www-form ...
- java 非模态_Qt 之 模态、非模态、半模态窗口的介绍及 实现QDialog的exec()方法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/GoForwardToStep/arti ...
最新文章
- iOS9中如何在日历App中创建一个任意时间之前开始的提醒(一)
- photoshop中把图片颜色变成透明
- yolov3深度解析
- 【数字信号处理】线性常系数差分方程 ( 卷积 与 “ 线性常系数差分方程 “ | 使用 matlab 求解 “ 线性常系数差分方程 “ )
- golang匿名组合
- echart 数据视图_关于数据可视化图表的制作,你需要关注的30个小技巧
- 1至m为PQ节点,m+1至n-1为PV节点,n为平衡节点
- mysql 浮点类型和定点_mysql 中的浮点和定点类型
- vscode remote免密登录
- 动词ing基本用法_哪些动词后面只能接动名词背诵口诀
- 13. PHP 数组
- tcp 重发 应用层重传
- OpenWrt常用命令总结
- 拉普拉斯变换的本质意义
- 人工智能贬为人工智障,揭下“伪装”的智能产品
- Epicor开发实例
- could not establish connection to “hostname”
- Windows系统申请苹果证书
- 什么是Android SDK
- vue的:href和href
热门文章
- 【缅怀妈妈系列诗歌】之十:妈妈,孩儿答应您
- 脚本调用后台代码 asp.net ajax
- 聚焦3D地形编程第五章GeomipMapping for the CLOD
- 关于渗透的一些思路持续更新(自我理解)
- Linux--内存结构
- php对提交数据的验证
- 在水晶报表中实现任意选择指定字段显示-模板及C#升级版
- hdu2722 简单最短路,处理好输入就行
- C语言经典例27-利用递归逆序输出字符串
- 【错误记录】Android Studio 编译报错 ( Deprecated Gradle features were used in this build, making it incompat )