url=http://192.168.1.105/SharpZipLib/1.rar //这个是服务器资源
filename=E:\下载地址保存\1.rar    //这个下载到本地保存路径
            System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL);
            System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();
            long totalBytes = myrp.ContentLength;
            System.IO.Stream st = myrp.GetResponseStream();
            System.IO.Stream so = new System.IO.FileStream(filename, System.IO.FileMode.Create);
            long totalDownloadedByte = 0;
            byte[] by = new byte[1024];
            int osize = st.Read(by, 0, (int)by.Length);
            while (osize > 0)
            {
                totalDownloadedByte = osize + totalDownloadedByte;
                so.Write(by, 0, osize);
                osize = st.Read(by, 0, (int)by.Length);
            }
            so.Close();
            st.Close(); 我用的这个方法在客户端运行这个网页开始下载,可是他下载文件保存的位置是在服务器端,并非客户端下的磁盘。要把文件下到本地该怎么设计,,,,?

解决方案 »

  1.   

    http://topic.csdn.net/u/20091022/09/51be10e4-584d-47fe-b7ff-f39b3ac4992a.html?18235
      

  2.   


            string fileName = "ce2.rar";//客户端保存的文件名
            string filePath = Server.MapPath("keji.rar");//路径        //以字符流的形式下载文件
            FileStream fs = new FileStream(filePath, FileMode.Open);
            byte[] bytes = new byte[(int)fs.Length];
            fs.Read(bytes, 0, bytes.Length);
            fs.Close();
            Response.ContentType = "application/octet-stream";
            //通知浏览器下载文件而不是打开
            Response.AddHeader("Content-Disposition", "attachment;   filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();
      

  3.   

            string filePath = this.Request.QueryString["filename"].ToString();
            System.IO.FileInfo file = new System.IO.FileInfo(filePath);
            if (file.Exists)
            {
                Response.Clear();
                Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
                Response.AddHeader("Content-Length", file.Length.ToString());
                Response.ContentType = "application/octet-stream";
                Response.Filter.Close();
                Response.WriteFile(file.FullName, false);
                Response.End();
            }
      

  4.   

    楼主,从原理上来分析,你的HttpWebRequest肯定是在服务器那边运行的,因为从b/s的角度来看,浏览器不过是解析下html而已,所以你写的code肯定把文件下到了服务器,那么解决问题的关键就是,你把下到服务器的东西给转发给浏览器不就可以了?
      

  5.   

    是,,,一直没搞清楚这个问题,为什么我的程序是下载到了发布网站的服务器磁盘内? 
    这个CS ,BS搞乱了
      

  6.   

    SK_Aqi=》
    终于有人解释这个问题,可是我不知道怎么把下到服务器的东西给转发给浏览器?  大家指点下,,,搞得我晕死了