我在ProductcheckDetail.aspx页面放了一个<asp:LinkButton/> 后台事件就是将服务器上的一个txt文件用Response.WriteFile(filename)的方式将发送给浏览器.FF测试的时候一切OK.但是用IE测试,IE却是对服务器发给它的文件不理不睬.打开后居然是页面的源文件!内容和在IE中 右键->查看页面源代码的内容一模一样!但文件名很奇怪,是ProductcheckDetail.aspx!我的天哪,百思不得其解.FF全都正常啊!
有没人知道那该死的IE为什么会这么做?
有没人知道那该死的IE为什么会这么做?
解决方案 »
- gridview导出到不同工作表中
- |zyciis| 求得出数据库中的未有的最大编号,谢谢
- sql2005已经允许远程连接,为何还报错:不允许进行远程连接可能会导致此失败
- CSDN的问题页面是生成的静态页吗??有个地方怎么实现的?
- 这个简单问题不解决 别的没法进行了
- DataGrid导出到excel后的单元格控制问题!!!
- 【深圳的ASP.net(C#)程序员朋友看过来】:这样的需求如何实现?
- .net文件读些问题(cumt发)
- 这问题困恼我很久了,希望高手解答一下。
- 我想在DATAGRID里绑定图片,请教?
- 求教 GDI+按指定大小新绘制一张图片的问题 我绘制不上去哦
- 怎样对绑定的数据进行数据处理
我在vs自带的开发服务器上测试了,代码全部都执了的。我也确定Response.WriteFile 里面的路径参数是在确的,文件是存在的.而且我将网站发布后(“允许修改此预编译网站”的勾去掉了的),挂到iis上,用IE再试,依然如此!
我现在最苦恼的是不知道是什么原因。
附上我的源代码吧,希望是我的源代码哪里错了,也好把这个问题解决了。
protected void lbtnShowdoc_Click(object sender, EventArgs e)
{
string filename = this.docfilename.Text;
string filepath = HttpContext.Current.Server.MapPath("~/images/files") + "\\";
string fileType = filename.Substring(filename.Length - 3).ToLower();
Response.ClearContent();
Response.ClearHeaders();
switch (fileType)
{
case "pdf":
Response.ContentType = "application/PDF";
break;
case "doc":
case "docx":
Response.ContentType = "application/msword";
break;
case "xls":
Response.ContentType = "application/Vnd.ms-excel";
break;
case "txt":
Response.ContentType = "text/plain";
break;
}
Response.HeaderEncoding = System.Text.UTF8Encoding.UTF8;
string contentFilename = UsuallOperation.UrlEncoder.ToHexString("成品检验报告."+fileType);
string userAgent = Request.UserAgent.ToUpper();
string fileNameHead;
if (userAgent.IndexOf("FIREFOX") > 0)
fileNameHead = string.Format("attachment;filename*=utf8''{0}", contentFilename);
else
fileNameHead = string.Format("attachment;filename = {0}", contentFilename);
Response.AddHeader("Content-Disposition", fileNameHead);
Response.WriteFile(filepath + filename);
Response.Flush();
Response.Close();
}
UsuallOperation.UrlEncoder.ToHexString("成品检验报告."+fileType)的作用是为了解决文件名乱码问题的。另,用IE测试下载功能时,文件下载对话框中显示的文件名为"成品检验报告.txt"但是用迅雷下载后保存的文件名默认为ProductcheckDetail.aspx 。写到这里,我怀疑是不迅雷的问题,因为文件是用HTTP的形式发给浏览器的,迅雷也许获取不到。
用IE自带的功能下载,内容就正确了,只不IE这家伙显示的文件名依然是16进制的形式(%e6%XXXX.txt)鄙视下~