从数据库中下载任意文件时无法自动选定要保存的文件类型
把附件存储在数据库中,上传文件时,这样得到文件类型:string   fileType   =   MyFile.PostedFile.ContentType; 
 其中的MyFile是File上传控件,现在上传一个rar压缩文件,得到的文件类型是application/octet-stream, 
 现在下载附件: 
 SqlDataReader   dr   =   command.ExecuteReader(); 
 if(dr.Read()) 
 { 
 	string   destFileName=Server.MapPath(name);   //得到文件名 
 	string   FT=dr[ "FileType "].ToString   ();            //得到文件类型 
 	FileInfo   fi   =   new   FileInfo(destFileName); 
 	Response.Clear(); 
 	Response.ClearHeaders(); 
 	Response.Buffer   =   false; 
 	Response.AppendHeader( "Content-Disposition ", "attachment;filename= "+Server.UrlEncode(Path.GetFileName(destFileName))); 
 	Response.AddHeader( "Content-Type ",FT); 
 	Response.BinaryWrite((byte[])dr[ "MyFile "]);         //输出文件 
 }   
 现在的问题是:1,在弹出的文件下载对话框中,文件名中如果包含中文就是乱码, 
 	                  2,另存为对话框不会自动选定要保存的文件类型,总是为“文档” 
 请问大家这个问题应该如何解决啊?
------解决方案--------------------晕了 附件上传到数据库?数据库应该记录一个路径就可以 然后把附件传到程序文件夹下
------解决方案--------------------转帖] 
 当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 可, 上面下划线标注的那句代码则可以注释掉了, 试一下, 结果一定让你非常满意!