在.net中怎么使用c#写下载文件代码啊

解决方案 »

  1.   

    File 成员 提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建 FileStream 对象。
      

  2.   

    本帖最后由 net_lover 于 2011-08-16 13:09:36 编辑
      

  3.   

              
        string path = Server.MapPath(Rurl);
                FileInfo fi = new FileInfo(path);
                Response.Write(path);
                //   判断文件是否存在
                if (fi.Exists)
                {
                    // 将文件保存到本机上
                    Response.Clear();
                    Response.ContentType = "application/octet-stream";
                    Response.AddHeader("Content-Disposition", "attachment; filename=" +           Server.UrlEncode(fi.Name));
                    Response.AddHeader("Content-Length", fi.Length.ToString());
                     Response.WriteFile(fi.FullName);
                     Response.Filter.Close();
                    Response.End();
                    Response.Flush();
    下载文件 使用这个代码写的但是出现这种问题 !各位大侠 菜鸟求救啊!!
      

  4.   

    有一种很简单的方法就是直接连接到你需要下载文件夹的文件:
    代码如下:
     HttpContext.Current.Response.Redirect("http://baidu.com.cn" + filePath);
    不管你的文件有多么大都是可以的 而且它有一点好处就是直接调用你的下载软件进行下载!
      

  5.   

    [code=C#] private static long GetFileSize(string url, out   bool progressKnown)
            {
                HttpWebResponse response = null;
                long size = -1;
                try
                {
                    response = (HttpWebResponse)GetRequest(url).GetResponse();                size = response.ContentLength;
                }
                finally
                {
                    if (response != null)
                        response.Close();
                }            return size;
            }
            //下载请求  
            private static HttpWebRequest GetRequest(string url)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Credentials = CredentialCache.DefaultCredentials;
                return request;
            }[/code]
      

  6.   

    关键是用这个代码
    string path = Server.MapPath(Rurl);
      FileInfo fi = new FileInfo(path);
      Response.Write(path);
      // 判断文件是否存在
      if (fi.Exists)
      {
      // 将文件保存到本机上
      Response.Clear();
      Response.ContentType = "application/octet-stream";
      Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fi.Name));
      Response.AddHeader("Content-Length", fi.Length.ToString());
      Response.WriteFile(fi.FullName);
      Response.Filter.Close();
      Response.Flush();
      Response.End();
    有时候能下载下来!
    有时候下载下来大小为0KB!!!!!!!!!!
      

  7.   

    不论文件大小!所有文件下载都是这样!!有时可以下载下来!有时候下载不来了 !自己做的.net下载,在本机测试和局域网其他机子测试都是这样!
      

  8.   

    asp.net下载文件 /// <summary> 
        /// 下载文件 
        /// </summary> 
        /// <param name="vPath">文件路径(绝对路径)</param> 
        public static void DownloadData(string path) 
        { 
            if (File.Exists(path)) 
            { 
                FileInfo DownloadFile = new FileInfo(path); 
                System.Web.HttpContext.Current.Response.Clear(); 
                System.Web.HttpContext.Current.Response.ClearHeaders(); 
                System.Web.HttpContext.Current.Response.Buffer = false; 
                System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream"; 
                System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8)); 
                System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString()); 
                System.Web.HttpContext.Current.Response.WriteFile(DownloadFile.FullName); 
                System.Web.HttpContext.Current.Response.Flush(); 
                System.Web.HttpContext.Current.Response.End(); 
            } 
            else 
            { 
                throw new Exception("提示:下载失败,找不到该文件"); 
            } 
        } 
      

  9.   

    /// <summary>
            /// 分块下载
            /// </summary>
            /// <param name="page">页面</param>
            /// <param name="fileNameWhenUserDownload">默认文件名</param>
            /// <param name="filePath">文件在服务器路径</param>
            public static void DownloadFile(System.Web.UI.Page page, string fileNameWhenUserDownload, string filePath)
            {
                System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
                if (fileInfo.Exists == true)
                {
                    const long ChunkSize = 502400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
                    byte[] buffer = new byte[ChunkSize];
                    page.Response.Clear();
                    System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
                    long dataLengthToRead = iStream.Length;//获取下载的文件总大小
                    page.Response.ContentType = "application/octet-stream";
                    page.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(fileNameWhenUserDownload, System.Text.Encoding.UTF8));
                    while (dataLengthToRead > 0 && page.Response.IsClientConnected)
                    {
                        int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
                        page.Response.OutputStream.Write(buffer, 0, lengthRead);
                        page.Response.Flush();
                        dataLengthToRead = dataLengthToRead - lengthRead;
                    }
                    page.Response.Close();            }
            }非常方便,直接调用就可以。
    欢迎光临我的博客
      

  10.   

     public void FileDownload(string strFullName)//下载文件绝对路径
        {
            if (File.Exists(strFullName))
            {
                FileInfo DownloadFile = new FileInfo(strFullName);
                Response.Clear();
                Response.ClearHeaders();
                Response.Buffer = false;
                Response.ContentType = "application/octet-stream";
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.Name, System.Text.Encoding.UTF8));
                Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
                Response.WriteFile(DownloadFile.FullName);//DownloadFile.FullName保存文件名
                Response.Flush();
                Response.End();
            }
            else
            {
                Response.Write("<script>alert('文件不存在');</script>");
            }
        }
    要加上命名空间:using System.IO;