附件下载直接显示另存为对话框并保存原有中文文件名的解决办法

一直都很想做这个功能,但没有时间去整理这次客户要求一定要做,只能做了一下。

原理其实很简单,就是修改一下HTTP的响应头信息就可以了。

因为我原来设计的时候就把附件的处理做成一个用户组件,所以修改起来也很简单,只要增加一个下载的界面及修改用户组件的内容即可。

具体步骤:

1、把原来显示附件的链接地址统一改为AttachDownload.aspx?attachid=xxxx

2、添加一个AttachDownload.aspx页面,具体的代码如下:

  

Code

需要注意的地方:

1、中文文件名最好用Server.UrlEncode进行处理一下。这样会安全一些,有一些IE客户端有把IE选项里的高级“总是以UTF-8发送URL钩上,如果没有钩上,不加这句话可能会出现乱码的情况,如果有钩上可能会正常。

2、.net发布的时候最好把bin下的dll删除掉再把新的复制上去。这次客户更新时候就是用覆盖的方式,造成没有及时更新,让我找了好久都没有找到问题所在。

原文地址:https://www.cnblogs.com/liubiqu/p/1261737.html