1.客户机用IE连到服务器上去下载文件(有个aspx页面,上面放文件的链接),文件放在服务器硬盘上,不是数据库
2.有些机子可以下载,完全没问题,
3.有些机子下载某些文件时会出错,变成下载当前的aspx页面,而下载另外一些没错
4.机子环境一致,同样的win2000 sp4 + IE6.0SP1,不装任何IE插件
5.下载代码: FileStream fileStream=new FileStream(sFileUpLoadPath+dl_SupportFile.SelectedValue,FileMode.Open); 
long fileSize = fileStream.Length; 
Context.Response.ContentType="application/octet-stream"; 
Context.Response.AddHeader("Content-Disposition","attachment; filename=\"" + HttpUtility.UrlEncode(dl_SupportFile.SelectedItem.Text,System.Text.Encoding.UTF8) + "\""); 
Context.Response.AddHeader("Content-Length",fileSize.ToString()); 
byte[] fileBuffer=new byte[fileSize]; 
fileStream.Read(fileBuffer, 0, (int)fileSize); 
fileStream.Close(); 
Context.Response.BinaryWrite(fileBuffer); 
Context.Response.End(); 注: sFileUpLoadPath+dl_SupportFile.SelectedValue代表文件路径
    dl_SupportFile.SelectedItem.Text 代表文件名
有哪位老大见过这问题?拜托了........

解决方案 »

  1.   


    dim objtime as string
    objtime=year(now()) & "-" & month(now()) & "-" & day(now()) & "-" & hour(now()) & "-" & minute(now())
    Dim objFile As New IO.FileStream(server.mappath(objtime &".txt"), IO.FileMode.Create)
    Dim bytFile As Byte()
    bytFile = System.Text.ASCIIEncoding.Default.GetBytes(wstring)
    objFile.Write(bytFile, 0, bytFile.Length)
    objFile.Close()
    Response.ContentType = "application/octet-stream" 
        Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312") 
        Response.AppendHeader("Content-Disposition","attachment;filename="& objtime &".txt") 
        Response.WriteFile(objtime &".txt")
        Response.End()
    %>
    <script language='JavaScript' >window.close();</script>
      

  2.   

    to 孟子E章 : 是有中文名字的,但同样的附件在别的机子上相同环境下(操作系统和IE)却可以下载to qiri07: 不太明白
      

  3.   

    再说明一下,错误的下载是提示下载该aspx页面
    如本来应该保存对话框提示下载aaa.doc的,现在确提示下载ttt.aspx,点击确定就出错
      

  4.   

    IE的小版本是不是一样的?
    IE6打过SP2和没打过是不一样的
      

  5.   

    to ncjcz : IE版本均为 IE6.0 SP1;不加其他任何补丁
    操作系统均为win2000 sp4
      

  6.   

    做的这么复杂干什么啊
    既然在硬盘上
    直接Response.Redirect(完整路径文件名)就可以了
    不过如果是IE6 SP1的话,文件名有17个汉字的限制
      

  7.   

    to all:
    我不理解的是,为什么在操作系统和IE版本相同的情况下,有的机会出现问题,有的不会
    唉,郁闷死了
      

  8.   

    to cf_1981:中文转换?和这个没关系吧,有的机子没问题啊。
    除了操作系统和IE版本,还有没有什么可能会造成下载一个附件,却指向下载当前的aspx页面呢?哪位老大有遇见,关键是有的机子可以有的机子不行(操作系统和IE版本一致)
      

  9.   

    to arice1983:不是服务器忙
    有的机子就是下不了那些附件,但是下别的附件没问题,比如都是xls文件,有些可以下,有些不能下。
    另外的机子,无论什么都可以下
    且正常能下的机子超过70%
      

  10.   

    你试试看下载的文件名全改为英文的,在原来不好用的机器上是不是就好用了,如果可以,就把浏览器中属性中的高级选项里面的UTF—8一项的挑消除,就应该可以了,不一定对,我再帮你想想别的哦
      

  11.   

    to cf_1981:
    好,我试试看
      

  12.   

    http://community.csdn.net/Expert/topic/4890/4890555.xml?temp=.5385858
      

  13.   

    我帮你们顶
    你们也去看看我的那个问题,有人说我的想法有问题,根本行不通,我同学说的
    http://community.csdn.net/Expert/topic/4887/4887442.xml?temp=.1098444
      

  14.   

    同意直接Response.Redirect(完整路径文件名)。
      

  15.   

    我帮你们顶
    你们也去看看我的那个问题,有人说我的想法有问题,根本行不通,我同学说的
    http://community.csdn.net/Expert/topic/4892/4892388.xml?temp=.3035395
      

  16.   

    小弟这两天在别处工作,无法上网
    今天过去看后,试着把utf-8去掉,未解决,情况仍然
    现在考虑改代码,改成全英文的再试试
      

  17.   

    请各位帮忙想想,有什么可能会导致有的机子能下,有的机子不能下
    操作系统和IE都是win2000 sp4+ie6.0sp1
      

  18.   

    把有问题的机子的SP4卸掉,再装好的SP4不就行了。
    你要找原因,不知要找到什么时候呢。
      

  19.   

    如果都是IE的话,把这句
    Context.Response.ContentType="application/octet-stream"; 
    改称
    Context.Response.ContentType="application/ms-download"; 至于你的问题,小弟不敢乱猜测。