if(!System.IO.File.Exists(strFile))
{
Response.Write("<script language='javascript'>alert('对不起,文件不存在!');</script>");
return;
}
FileInfo fi=new FileInfo(strFile);
string ct = Response.ContentType;    Response.Clear(); 
strFile=HttpUtility.UrlEncode(strFile,System.Text.Encoding.UTF8);
Response.AppendHeader("Content-Disposition","attachment; filename="+Path.GetFileName(strFile)); 
Response.AppendHeader("Content-Length", fi.Length.ToString()); 
Response.ContentType = "application/octet-stream";
FileStream fs=fi.OpenRead();
byte[] tmpbyte=new byte[fi.Length];
fs.Read(tmpbyte,0,tmpbyte.Length);
fs.Close();
Response.BinaryWrite(tmpbyte);
//Response.Flush();
//Response.ContentType = ct;
Response.End();
通过测试发现Response.AppendHeader("Content-Disposition","attachment; filename="+Path.GetFileName(strFile)); 这段代码加上,在其他机器上访问就返回到登录页面了,但这段代码在本机上用没有问题!这是什么原因啊?

解决方案 »

  1.   

    那个目录我已经加上everyone了,可还是不行啊
      

  2.   

    機器在域里嗎?
    如果在,EVERYONE僅表示域內的所有人.
      

  3.   

    string strFile=你的路径
    if(!System.IO.File.Exists(strFile))
    {
    Response.Write("<script language='javascript'>alert('对不起,文件不存在!');</script>");
    return;
    }
    Response.Clear();
    Response.ClearHeaders();
    Response.Charset = "GB2312";
    Response.ContentEncoding =System.Text.Encoding.UTF8;
    Response.ContentType = "application/octet-stream"; 
    FileInfo fi=new FileInfo(strFile);
    Response.AddHeader("Content-Disposition","attachment;  filename="  +  HttpUtility.UrlEncode(fi.Name)) ;
    Response.AddHeader("Content-Length",fi.Length.ToString());
    byte[] tmpbyte=new byte[1024*8];
    FileStream fs=fi.OpenRead();
    int count;
    while((count=fs.Read(tmpbyte,0,tmpbyte.Length))>0)
    {
    Response.BinaryWrite(tmpbyte);
    Response.Flush();
    }
    fs.Close();
    Response.End();楼主用这段代码试一下
      

  4.   

    to sunnystar365(一个人的天空) :谢谢,我开始的时候就是这么写的,这么用在本机上有个问题:弹出下载对话框后,点取消,反复三次,再点下载时将不会弹出对话框。在别的机器上访问本机时页面只有一句话“Object is here”
      

  5.   

    to  Joy_Zhao() :谢谢,我们的内网没有域的设置,如果是这个问题,请告诉我应该如何设置文件所在目录的访问权限。(所在分区为NTFS)
      

  6.   

    如果是域的問題.請在WebConfig裡面設結點
    <identify impersonate=true username="domain\username" password="**" />
      

  7.   

    你先试试在本机用http://127.0.0.1来访问,不要用http://localhost。
      

  8.   

    问题找到了,原因是这段代码所属的页面被包含在一个frame里面了,如果是单独的页面这段代码是没有问题的,但我还是没办法,各位再帮想想办法!谢谢了。