//获取资源的编号
string id = Request["id"].ToString();
NRBLL.File bf = new Asiastar.NRBLL.File();
Guid guid = new Guid(id);
//获取资源完整路径
string filepath = bf.FN_SerchPathByFileId(guid).Tables[0].Rows[0]["FilePath"].ToString();
//文件名称
string filename = bf.FN_SerchPathByFileId(guid).Tables[0].Rows[0]["FileNam"].ToString();
filepath = Server.UrlDecode(filepath);
filename = Server.UrlDecode(filename);
//FileInfo fileinfo = new FileInfo(filepath);
////string filename = System.IO.Path.GetFileName(fileinfo.FullName);
try
{
//string fileName = HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(filename));
//filename = filename.Replace("+", "%20"); //将“+”替换成“空格”
// 以字符流的形式下载文件
FileStream fs = new FileStream(filepath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = Encoding.GetEncoding("gb2312");
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
catch (Exception exe)
{
Response.Write(exe.ToString());
}保存是正常的 但是直接IE打开文件名称就是乱码了
解决方案 »
- fckeditor 上传图片问题
- 菜问:一个.CS代码文件,折分两个或多个存放。
- Repeater控件如何让某一行为红色?
- 今天升级了,咱也散散分.
- 高手请进帮解释一下
- 还是treeview问题,再线等。
- 我想在 类里面写个函数 老出错帮我看看
- VB ServerXMLHTTP.POST 到ASP.NET程序,ASP.NET进行参数获取出错中英文字符出错??在线等不够加分!!500分
- 如何在提交过来的表单中判断是不是日期字符串!!!!!!!!!
- 上传程序,包含代码,出于安全考虑,有个地方搞不清了。
- 【100分】跪求 海康SDK .NET 开发问题!!!! 【急!!!】
- 关于MVC2的发布问题,急!!!!!!!!!!!!!
---------
怀疑是gb2312的问题
base {System.SystemException} = {由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。}
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=Report.xls"); string stringExportString = Slife.WebUtility.Utils.GetExportString(this.TableDate);
Response.Output.Write(stringExportString); Response.End();你试试我这种的?
string fileName="中文.xls";string filePath = @"/UpLoad/Reports"FileInfo file = new FileInfo(System.Web.HttpContext.Current.Server.MapPath(filePath)+fileName); Response.Charset = "utf-8"; Response.ContentEncoding = System.Text.Encoding.UTF8; // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 Response.AddHeader("Content-Disposition", "attachment; filename=" +HttpUtility.UrlEncode("下载文
件"+".xls",System.Text.Encoding.UTF8)); // 添加头信息,指定文件大小,让浏览器能够显示下载进度 Response.AddHeader("Content-Length", file.Length.ToString()); // 指定返回的是一个不能被客户端读取的流,必须被下载 Response.ContentType = "application/ms-excel"; // 把文件流发送到客户端 Response.WriteFile(file.FullName); // 停止页面的执行 Response.End(); /////////////可用/////////////////////////////////////////////////////// ASP.NET实现下载功能的中文文件名乱码处理(收集)在系统中添加文件管理的下载功能, 要求在ASPX文件中实现, 以进行权限的控件,于是添加下列代码:...Response.ContentType = mime; //相应的MIME TYPEResponse.AppendHeader("Content-Disposition", "attachment; filename=\"" +fileName + "\"");Response.BinaryWrite(bytes);Response.End();...当fileName中包含中文时, 文件下载保存时, 文件名变成了乱码, 需要用户修改,解决办法1:对fileName进行URL编码, 把下划线标注的那句改为 Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + Server.UrlEncode(fileName) + "\"");便可.虽然中文乱码问题解决了, 但是还有一个问题: 在测试时, 下载保存的文件名有时会变成该页面的名字(.aspx), 虽然可以把内容下载到
本地, 但是需要更改文件名及类型, 这样会给用户带来很大的困惑.还有一个办法, 可以很简单的解决以上的两个问题:解决办法2: 假设当前的URL为 http://localhost/download.aspx?id=123, fileName为"下载.pdf", 我们只要把下载URL改为
http://localhost/download.aspx/下载.pdf?id=123 可, 上面下划线标注的那句代码则可以注释掉了
Response.AddHeader("Content-Disposition", "attachment;filename="+Uri.EscapeDataString( FileName));