当前位置:编程学习 > C#/ASP.NET >>

急急急急!!字符窜被截取

filename = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + filename+ "\"");

    文件名太长会被截取啊,该怎么解决啊?
--------------------编程问答-------------------- 这是由于内容部署标头用于文件流是大于大约 150 字节, 拉丁字符集是等于 150 个字符。 如果是使用非拉丁字符集, 例如日语或俄语格式化内容部署标头可能会发生此行为。
if (fullFileName.Length > 150) 

byte[] bs = System.Text.Encoding.UTF8.GetBytes(fullFileName); 
fullFileName = System.Text.Encoding.Default.GetString(bs); 


http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B820129 --------------------编程问答-------------------- 两个\是什么作用啊?是因为文件名长吗?
这么写试试:
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename); --------------------编程问答-------------------- 不行啊,文件名还是被截取了! --------------------编程问答-------------------- 如果去掉这句话filename = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);
就乱码了。 --------------------编程问答-------------------- 可能与类型有关系吧,学习中 --------------------编程问答-------------------- 你的文件名太长,你的文件名中包括了路径吧,要不包括路径,你的文件名不可能太长
尝试以下处理办法:

filename = HttpUtility.UrlEncode(new System.Io.FileInfo(filename).Name, System.Text.Encoding.UTF8);


--------------------编程问答-------------------- up一下下 --------------------编程问答-------------------- 就是有可能会有很长的文件名啊!那样还是不行啊。郁闷死了!!
     就是下载附件的时候另存为,文件名太长,就会被截取。 --------------------编程问答-------------------- 放到text里面去 --------------------编程问答--------------------
引用 9 楼 canshishidao 的回复:
放到text里面去

那要怎么获取text的值呢,我也想过,但是弹出来的文件另存为对话框是微软自带的,要怎么获取它上面的文件名的输入框呢? --------------------编程问答-------------------- 没人会吗?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,