Eclipse开发平台 Eclipse集成开发环境 Java技术参考 J2EE企业应用项目 J2EE开发框架整合应用
Visual Studio 2008 技术 Visual Studio 2008集成环境 LINQ SQL Server 2008数据库 Silverlight WCF WPF WWF
平台综合 开发平台技术动态 跨平台开发 软件信息技术与商业 国外媒体技术资讯
程讯网下载 精品代码 — J2EE应用下载 精品代码 — ASP.NET应用 常用J2EE开发框架 流行ASP.NET开发框架

搜索
Google
 
最新文章
对“职业生涯及规划”的一些想法与建议
 
Visual Studio 10将会怎样?
 
三十怎么了? 心态最重要!
 
访问Microsoft格式文件的Jakarta-POI API库的.NET版本
 
dashCommerce 3.X如何安装Microsoft SQL Server 2005 Express Edition的高级服务功能
 
.net 2.0运行时提示以下错误:authentication mode=Windows 解决方法如下
 
在浏览器中发贴子时实现自动添加贴子签名档的BHO对象设计
 
C#下用Browser Helper Object对象实现拦截IE浏览器的各项消息的IE插件
 
Build a Managed BHO and Plug into the Browser
 
在C#中用WM_COPYDATA消息来实现进程间通信的详细编码
 
BHO 浏览器辅助对象关联原理、编写流程
 
Oracle8i的卸载
 
Oracle9i图形工具OEM的简介
 
详细介绍整个Oracle9i软件的安装过程
 
C# 面向对象设计模式纵横谈 - 18、Iterator迭代器(行为型模式)
 
 
ASP.NET编程下载,下载对话框里的文件名显示乱码的解决办法 - Visual Studio常见问题FAQ、Knowledge base知识库、使用经验和技巧
 
内容摘要 -
弹出的保存或打开对话框里的文件名是乱码。 解决如下,中文文件名需要编码:

全文 -

ASP.NET编程下载,下载对话框里的文件名显示乱码的解决办法


如下的代码:

Response.Clear();
Response.ContentType = "application/msword";
Response.AppendHeader("Content-Disposition", "attachment; filename=\"" +  doc.FileName + "\"");
Response.BinaryWrite(doc.DownloadFile(original));
Response.End();

弹出的保存或打开对话框里的文件名是乱码。

解决如下,中文文件名需要编码:

Response.ContentType="application/ms-word";
String filename = Request.Params["filename"];
//中文文件名需要编码
Response.AddHeader( "content-disposition","attachment; filename="+HttpUtility.UrlEncode(filename,Encoding.UTF8 ) );

 

ASP.NET直接下载一个文件,而不是在IE中打开它,使用如下代码:

FileStream fileStream=new FileStream("C:\\doc\\test.doc",FileMode.Open);
long fileSize = fileStream.Length;
Context.Response.ContentType="application/octet-stream";
Context.Response.AddHeader("Content-Disposition","attachment; filename=\"" + HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) + "\"");
Context.Response.AddHeader("Content-Length",fileSize.ToString());
byte[] fileBuffer=new byte[fileSize];
fileStream.Read(fileBuffer, 0, (int)fileSize);
fileStream.Close();
Context.Response.BinaryWrite(fileBuffer);
Context.Response.End();

 

ASP.NET直接下载一个文件,而不是在IE中打开它:

private void Button1_Click(object sender, System.EventArgs e)
{
try
{

string str = "<html>";
for(int page=0; page<4; page++)
{
str += "<TABLE borderColor='black' cellSpacing='0' borderColorDark='white' cellPadding='3' border='1'>";
str += "<tr><th>描述</th></tr>";
for(int i=1; i< 10; i++)
{
str =str + "<tr><td>测试" + i.ToString() + "</td></tr>";

}
str +="</table>";

//.doc 换页
str +="<br clear=all style='mso-special-character:line-break;page-break-before:always'>";
}

str += "</html>";

byte[] buff = System.Text.Encoding.Unicode.GetBytes(str);
//byte[] buff = System.Text.Encoding.UTF8.GetBytes(str);

byte[] outBuff = new byte[buff.Length + 2];

// 使用文件流方式写入UniCode编码的doc文件。
byte[] mark = {0xFF,0xFE} ;
outBuff[0] = mark[0];
outBuff[1] = mark[1];

for(int i=0; i< buff.Length; i++)
{
outBuff[i+2] = buff[i];
}

Context.Response.ContentType="application/octet-stream";
string fileName = "测试.doc";
Context.Response.AddHeader("Content-Disposition","attachment; filename=\"" + HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) + "\"");

Context.Response.AddHeader("Content-Length",outBuff.Length.ToString());
Response.BufferOutput = true;
Response.Clear();
Context.Response.BinaryWrite(outBuff);
Context.Response.End();

 


}
catch(Exception ex)
{
ex.ToString();
}
finally
{

}

}


 
相关内容
查找更多 ◇ Visual Studio常见问题FAQ、Knowledge base知识库、使用经验和技巧