[求助] 附件下载的时候,当文件名超过一定长度的时候,下载的时候出现的是aspx文件名,而不是要下载的文件名字

flyincs 2006-10-20 11:48:46
请问这种情况该如何解决?谢谢
代码如下:
---------------------
string fileName = DirectoryIsExisting() + e.CommandArgument;
System.IO.FileInfo file = new System.IO.FileInfo(fileName);
Response.Clear();
Response.ClearHeaders();
Response.Buffer=false;
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AddHeader("Content-Disposition","attachment;filename = " + Server.UrlEncode(file.Name));
Response.AddHeader("Content-Length",file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(file.FullName);
Response.Flush();
Response.End();
...全文
229 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuhealth 2006-10-21
  • 打赏
  • 举报
回复
[转帖]
当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 可, 上面下划线标注的那句代码则可以注释掉了, 试一下, 结果一定让你非常满意!
slow1962 2006-10-21
  • 打赏
  • 举报
回复
帮你顶一下
flyincs 2006-10-21
  • 打赏
  • 举报
回复
我测试过,中文字字数不能超过30个,超过30个字的文件名下载的时候就出现这种问题。
我的文件名没有出现非法字符。
  • 打赏
  • 举报
回复
你的 fileName 中不置于会包含非法字符吧?例如斜杠就不能有。
  • 打赏
  • 举报
回复
文件名当然是由长度限制的。windows操作系统在文件名长于100个字节往往就会溢出。
flyincs 2006-10-21
  • 打赏
  • 举报
回复
来人帮忙解决啊?
slow1962 2006-10-20
  • 打赏
  • 举报
回复
关注,也想知道。
ytx98 2006-10-20
  • 打赏
  • 举报
回复
Mark+Up
flyincs 2006-10-20
  • 打赏
  • 举报
回复
敬请关注,谢谢
flyincs 2006-10-20
  • 打赏
  • 举报
回复
怎么没有人回答这个问题啊?

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧