.net C# 下,下载时文件名为中文太长时就出现乱码和被截现象,我看过好多帖子试过好多方法都不行,大家探讨下,找个好的解决方案,做成功过的大虾给点提示,分享下经验哈 Response.Buffer = true;
Response.Clear();
Response.ContentType = ct;///"application/octet-stream";
int i = filename.LastIndexOf(".");
string ext = "";
if (i > 0)
{
ext = filename.Substring(i);
filename = filename.Substring(0, i);
};
filename = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);
filename = filename + ext;
Response.AddHeader("Content-Disposition", "inline;attachment;filename=\"" + filename + "\"");
Byte[] b = (Byte[])reader["EFile"];
if (b.Length == 0)
{
Byte[] b2 = { Byte.Parse("32") };
Response.BinaryWrite(b2);
}
else
{
Response.BinaryWrite(b);
}
Response.Flush();
Response.End();
Response.Clear();
Response.ContentType = ct;///"application/octet-stream";
int i = filename.LastIndexOf(".");
string ext = "";
if (i > 0)
{
ext = filename.Substring(i);
filename = filename.Substring(0, i);
};
filename = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);
filename = filename + ext;
Response.AddHeader("Content-Disposition", "inline;attachment;filename=\"" + filename + "\"");
Byte[] b = (Byte[])reader["EFile"];
if (b.Length == 0)
{
Byte[] b2 = { Byte.Parse("32") };
Response.BinaryWrite(b2);
}
else
{
Response.BinaryWrite(b);
}
Response.Flush();
Response.End();
群号:29037453
System.Text.Encoding.UTF8.GetBytes("带中文的url"));
Response.AppendHeader("Content-Disposition", "attachment; filename=" + strFileName);
敢问下要怎么设呢?麻烦详细点,Thanks !!
string filePath = @"D:\新实打实的撒旦撒旦文档倒萨按到阿萨德倒萨.txt"; System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath); if (fileInfo.Exists == true)
{
const long ChunkSize = 102400;
byte[] buffer = new byte[ChunkSize]; Response.Clear();
System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
long dataLengthToRead = iStream.Length;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
while (dataLengthToRead > 0 && Response.IsClientConnected)
{
int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));
Response.OutputStream.Write(buffer, 0, lengthRead);
Response.Flush();
dataLengthToRead = dataLengthToRead - lengthRead;
}
Response.Close();
}
群号:29037453 .
net技术交流群,欢迎喜欢.net开发的同仁们一起讨论问题,解决问题,交流经验和技术
我试了,当filename = "中文收文引入正文不限制格式当文件查看时按照一般附件可以打开或下载回退时将回退节点上级节点后面所有节点的即时消息状态改为.doc" 时,点下载文件名就变成“%8a%82点后面所有节点的即时消息状态改为.doc” 了期待中。。
if (fullFileName.Length > 150)
{
byte[] bs = System.Text.Encoding.UTF8.GetBytes(fullFileName);
fullFileName = System.Text.Encoding.Default.GetString(bs); } 下载在IE8里面是完全正常的,在IE6里面就会造成字符串截止
不使用UTF8的UrlEncode编码,直接使用gb2312编码输出中文名。
HttpResponse.TransmitFile
最后的几句什么意思啊? HttpResponse.TransmitFile 是?
{
byte[] bs = System.Text.Encoding.UTF8.GetBytes(fullFileName);
fullFileName = System.Text.Encoding.Default.GetString(bs); }
我在研究,貌似有戏wuxing2006 能不能给多一点点的提示?比如说代码之类的都行哈
你的 <a href="绑定路径"></a> 里路径去哪呢?一个页面?然后让那个页面负责下载?还是直接href到那个文件?估计这样行不通
谁帮我解惑