HttpContext.Current.Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode("文件名",System.Text.Encoding.UTF8));这是我要输出的文件的文件名.<globalization
requestEncoding="gb2312"
responseEncoding="gb2312"
/>
这是web.config的配置信息可是我输出的时候.中文是乱码..不知道应该怎么处理.谢谢
requestEncoding="gb2312"
responseEncoding="gb2312"
/>
这是web.config的配置信息可是我输出的时候.中文是乱码..不知道应该怎么处理.谢谢
解决方案 »
- 在.NET中创建解决方案与添加解决方案有什么不同
- 请问VS2008 Team版能否升级到sp1
- 怎样才能不刷新页面而只刷新校验码?
- 一个asp.net的问题 关于按钮的OnClick 急!
- 如何取得自定义控件的返回值?
- 关于企业级模板的问题
- string format的问题
- [近乎跪求] 编译Infragistics NetAdvantage源码问题 [用过的帮顶! 改过源码并成功使用的请进! 对Asp.net组件开发熟悉的人请进!]
- 超级疑惑:如何在web中传递System.IntPtr类型?
- ASP.NET 2.0中动态添加 GridView 模板列的例子
- "未能开始监视文件更改"的错误
- gridview里checkbox问题
针对文件名
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(name));针对文件内容
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");出现问题了,可能 是应为 你 在URL 中 传递了 中文name。 如果这样的话,传递的时候,也要 编码: Server.UrlEncode
<a href='<%#"downfile.aspx?name="+Server.UrlEncode(DataBinder.Eval(Container.DataItem,"filename").ToString())+"&path="+DataBinder.Eval(Container.DataItem,"filepath")%>' >
之前也遇到LZ的类似问题,现在还是没有解决.
StreamReader reader = new StreamReader(FileName, System.Text.Encoding.Default)
谢谢
private void Page_Load(object sender, System.EventArgs e)
{
if(Request.QueryString["name"]!=null && Request.QueryString["path"]!=null)
{
downloadfile(Request.QueryString["name"].ToString(),Request.QueryString["path"].ToString());
}
}
==
private void downloadfile(string name,string path)
{
/*WriteFile实现下载*/ FileInfo fileInfo = new FileInfo(Server.MapPath(path));
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(name));
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();
/* 第二种方法,批量下载
System.IO.Stream iStream = null;
byte[] buffer = new Byte[10000];
int length;
long dataToRead;
string filepath = Server.MapPath(path);
string filename = System.IO.Path.GetFileName(filepath);
try
{
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
System.IO.FileAccess.Read,System.IO.FileShare.Read); dataToRead = iStream.Length;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename)); while (dataToRead > 0)
{
if (Response.IsClientConnected)
{
length = iStream.Read(buffer, 0, 10000); //每次读取 10K
Response.OutputStream.Write(buffer, 0, length);
Response.Flush(); buffer= new Byte[10000];
dataToRead = dataToRead - length;
}
else
{
dataToRead = -1;
}
}
}
catch (Exception ex)
{
Response.Write("Error : " + ex.Message);
}
finally
{
if (iStream != null)
{
iStream.Close();
}
}
*/ }
上面 是下载 附件的方法,
另外一种 下载为 excel 的方法<HEAD>
<%Response.AddHeader("Content-Disposition", "attachment; filename="+HttpUtility.UrlEncode("订单MIS.xls"));%>
<%Response.ContentType="application/vnd.ms-excel";%>
<%Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");%>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="ProgId" content="Excel.Sheet">
<meta name="Generator" content="Microsoft Excel 11">
<link rel="File-List" href="Book1.files/filelist.xml">
<link rel="Edit-Time-Data" href="Book1.files/editdata.mso">
...................................