易截截图软件、单文件、免安装、纯绿色、仅160KB

遭遇Asp.Net长文件名下载的问题和解决办法

在Asp.Net中写了一个附件上传和下载的程序,附件上传到数据库中,然后将附件的GUID保存起来,我们可以根据GUID来找到数据库中的附件,一般附件下载的代码是:
private void Download(string ID)
    {
        file = logic.GetAttachmentByID(new Guid(ID));
        Response.AddHeader("Content-Type", file.Type);
        Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(file.FileName) + "\"");
        Response.BinaryWrite(file.Data.ToArray());
        Response.End();
    }
这里比较重要的就是Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(file.FileName) + "\"");这里需要对中文文件名进行编码,默认是使用的UTF8编码。但是编码后文件名就会变得很长,比如我现在有一个文件叫:
招标送检样机项目检查登记表(终端)-空.XLS
我们进行网络抓包,可以看到在下载文件的时候的HTTP响应是:
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 44032
Content-Type: application/vnd.ms-excel
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 12.0.0.6219
X-AspNet-Version: 2.0.50727
Content-Disposition: attachment; filename="%e6%8b%9b%e6%a0%87%e9%80%81%e6%a3%80%e6%a0%b7%e6%9c%ba%e9%a1%b9%e7%9b%ae%e6%a3%80%e6%9f%a5%e7%99%bb%e8%ae%b0%e8%a1%a8(%e7%bb%88%e7%ab%af)-%e7%a9%ba.XLS"
Date: Wed, 25 Mar 2009 08:00:26 GMT
可以得到编码后文件名变成了:
%e6%8b%9b%e6%a0%87%e9%80%81%e6%a3%80%e6%a0%b7%e6%9c%ba%e9%a1%b9%e7%9b%ae%e6%a3%80%e6%9f%a5%e7%99%bb%e8%ae%b0%e8%a1%a8(%e7%bb%88%e7%ab%af)-%e7%a9%ba.XLS
这都是在HTTP头里面的,由于浏览器或者其他原因,对于这么长的HTTP头,系统会对字符串进行截止,那么就会造成下载的时候文件名不全或者干脆就是乱码的情况。我试了一下,这个文件的下载在IE8里面


相关文档:

ASP.NET的错误处理机制

对Web应用程序来说,发生不可预知的错误和异常在所难免,我们必须为Web程序提供错误处理机制。当错误发生时,我们必须做好两件事情:一是将错误信息记录日志,发邮件通知网站维护人员,方便技术人员对错误进行跟踪处理;
二是以友好的方式提示最终用户页面发生了错误,而不能将未处理的错误信息显示给用户。
 
&nbs ......

Asp.net 页面传值之 @ PreviousPageType 指令。

给出如下例子 我只知道这样做可以调用上一个页面 的值或者方法 但是我不知道原理和它的优略
请高手 加以指点 大家共同学习 谢谢!
1.Default.aspx 页面
protected void but1_Click(object sender, EventArgs e)
    {
        Server.Transfer("Default2.aspx"); ......

asp.net网站页面空白故障解决方法

帮人看一个网站,是ghost克隆后出现空白故障,无论重装IIS还是NETFrameWork都不能正常解析aspx文件一样,遇到aspx显示就是空白页面。
最后发现global.aspx的application_error处理中把错误信息擦除了,修改回来让它显示具体错误。
发现无法csc写入dll文件到临时目录。
解决方法,赋予NetService用户完全控制权限,在%win ......

用ASP.NET还原与恢复Sql server

上次做了个项目,涉及到数据库的还原和恢复,到网上找了一下,是利用SQLDMO实现的,只要添加SQLDMO引用就好了,然后利用下边的类的方法就可以实现了。
  我把原作者的类扩充了一下,可以自动识别web.config里 的数据库连接字符串,可以通过变量设置还原恢复的信息。
  需要注意的时还原,还原的时候问题最大了,有别 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号