我现在要下载服务器上一个文件,但是这个文件又不在工程的目录下,所以就不能用Server.MapPath()
假如这个文件在服务器上的F:\Share目录下,代码应该怎么写?
代码请尽可能的完整,谢谢了!!!

解决方案 »

  1.   

    文件不大可以Response.WriteFile
    大的话将数据分成较小的部分,然后将其移动到输出流以供下载System.IO.Stream iStream = null;
    byte[] buffer = new Byte[10000];
    int length;
    long dataToRead;
    string filepath  = "DownloadFileName";
    string  filename  = System.IO.Path.GetFileName(filepath);
    try
    {
    iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
    System.IO.FileAccess.Read,System.IO.FileShare.Read);
    dataToRead = iStream.Length;
    Response.ContentType = "application/octet-stream";
    Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
      while (dataToRead > 0)
    {
    if (Response.IsClientConnected)
    {
    length = iStream.Read(buffer, 0, 10000);
    Response.OutputStream.Write(buffer, 0, length);
    Response.Flush();
    buffer= new Byte[10000];
    dataToRead = dataToRead - length;
    }
    else
    {
    dataToRead = -1;
    }
    }
    }
    catch (Exception ex)
    {Response.Write("Error : " + ex.Message);
    }
    finally
    {
    if (iStream != null)
    {iStream.Close();
    }
    }
      

  2.   

    关键是这个路径怎么写,我如果写"\\Server\F:\Share\11.txt"就报格式不正确的错,如果写"//Server/Share/11.txt"就报用户名及密码错误。
      

  3.   

    //Server/F:/share 不是实际路径吗?
    那怎么用转义字符替代呢?
    我是菜鸟,麻烦给出代码。
      

  4.   

    这样直接写就应该没问题吧!
    string path=@"F;\Share\11.txt";
    @是用来转义的,和下面的效果一样;
    string path="F:\\Share\\11.txt";
      

  5.   

    前面如果要加上机器名呢?这个文件不在本机上,而在服务器上。
    按照楼上的方法,应该像这样写:
    "\\\Server\\F:\\Share\\11.txt"
    可是不行,报”不支持给定路径的格式“的错
      

  6.   

    asp.net的文件是在服务器进行处理的,写c:\1.txt也是处理服务器上的c:\1.txt
      

  7.   

    还有,我在路径前加"@",他说是字符无效。
    我是vb.net的语法,在vb.net里转义字符是什么啊?
      

  8.   

    为服务器上那个文件夹建个虚拟目录
    然后就可以用SERVER.MAPPATH
      

  9.   

    你要给F:\Share建一个虚拟目录才能通过http访问F:\Share里的文件呀。
    建一个虚拟目录再用Server.MapPath
      

  10.   

    用Server.MapPath访问的是服务器上的文件。现在这个文件不在服务器上,也不在客户端上,而在局域网内的另一台机器上。这个路径该怎么写?
      

  11.   

    我觉得那应该要在那台机器上安装一个客户端什么的。楼主用过asp木马吗?可以参照那个写
      

  12.   

    你想用web访问超越asp.net访问权限的文件,那是不可能的
    除非把服务器上的目录映射到你的web app机器上,才能正常访问