C#客户端直接从服务器下载文件到本地

1、局域网文件下载:

 1 public class RemoteDownload
 2     {
 3         public static void DownLoad(string addressUrl,string localName)
 4         {
 5             //下载文件
 6             System.Net.WebClient myWebClient = new System.Net.WebClient();
 7             myWebClient.DownloadFile(@"/10.2.0.254/software/01279.lic.txt", "testdownload.txt");            
 8             //下载end
 9         }
10     }
View Code

2、通过web方式,从远程服务器端下载文件:

 1 public class WebDownload
 2     {
 3         public static void DownLoad(string Url, string FileName)
 4         {
 5             bool Value = false;
 6             WebResponse response = null;
 7             Stream stream = null;
 8 
 9             try
10             {
11                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
12 
13                 response = request.GetResponse();
14                 stream = response.GetResponseStream();
15 
16                 if (!response.ContentType.ToLower().StartsWith("text/"))
17                 {
18                     Value = SaveBinaryFile(response, FileName);
19 
20                 }
21 
22             }
23             catch (Exception err)
24             {
25                 string aa = err.ToString();
26             }
27 
28         }
29 
30         /// <summary>
31         /// Save a binary file to disk.
32         /// </summary>
33         /// <param name="response">The response used to save the file</param>
34         // 将二进制文件保存到磁盘
35         private static bool SaveBinaryFile(WebResponse response, string FileName)
36         {
37             bool Value = true;
38             byte[] buffer = new byte[1024];
39 
40             try
41             {
42                 if (File.Exists(FileName))
43                     File.Delete(FileName);
44                 Stream outStream = System.IO.File.Create(FileName);
45                 Stream inStream = response.GetResponseStream();
46 
47                 int l;
48                 do
49                 {
50                     l = inStream.Read(buffer, 0, buffer.Length);
51                     if (l > 0)
52                         outStream.Write(buffer, 0, l);
53                 }
54                 while (l > 0);
55 
56                 outStream.Close();
57                 inStream.Close();
58             }
59             catch
60             {
61                 Value = false;
62             }
63             return Value;
64         }
View Code

3、从FTP上下载文件:

 1  public class FtpDownload
 2     {
 3         public static void DownLoad(string FtpPath)
 4         {
 5             /*首先从配置文件读取ftp的登录信息*/
 6             string TempFolderPath = System.Configuration.ConfigurationManager.AppSettings["TempFolderPath"].ToString();
 7             string FtpUserName = System.Configuration.ConfigurationManager.AppSettings["FtpUserName"].ToString();
 8             string FtpPassWord = System.Configuration.ConfigurationManager.AppSettings["FtpPassWord"].ToString();
 9             string LocalFileExistsOperation = System.Configuration.ConfigurationManager.AppSettings["LocalFileExistsOperation"].ToString();
10 
11 
12             Uri uri = new Uri(FtpPath);
13             string FileName = Path.GetFullPath(TempFolderPath) + Path.DirectorySeparatorChar.ToString() + Path.GetFileName(uri.LocalPath);
14 
15             //创建一个文件流
16             FileStream fs = null;
17             Stream responseStream = null;
18             try
19             {
20                 //创建一个与FTP服务器联系的FtpWebRequest对象
21                 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
22                 //设置请求的方法是FTP文件下载
23                 request.Method = WebRequestMethods.Ftp.DownloadFile;
24 
25                 //连接登录FTP服务器
26                 request.Credentials = new NetworkCredential(FtpUserName, FtpPassWord);
27 
28                 //获取一个请求响应对象
29                 FtpWebResponse response = (FtpWebResponse)request.GetResponse();
30                 //获取请求的响应流
31                 responseStream = response.GetResponseStream();
32 
33                 //判断本地文件是否存在,如果存在,则打开和重写本地文件
34 
35                 if (File.Exists(FileName))
36                 {
37                     if (LocalFileExistsOperation == "write")
38                     {
39                         fs = File.Open(FileName, FileMode.Open, FileAccess.ReadWrite);
40 
41                     }
42                 }
43 
44                 //判断本地文件是否存在,如果不存在,则创建本地文件
45                 else
46                 {
47                     fs = File.Create(FileName);
48                 }
49 
50                 if (fs != null)
51                 {
52 
53                     int buffer_count = 65536;
54                     byte[] buffer = new byte[buffer_count];
55                     int size = 0;
56                     while ((size = responseStream.Read(buffer, 0, buffer_count)) > 0)
57                     {
58                         fs.Write(buffer, 0, size);
59 
60                     }
61                     fs.Flush();
62                     fs.Close();
63                     responseStream.Close();
64                 }
65             }
66             finally
67             {
68                 if (fs != null)
69                     fs.Close();
70                 if (responseStream != null)
71                     responseStream.Close();
72             }
73 
74 
75         }
76     }
View Code

 

posted @ 2015-01-06 16:29  一个码农的成长之路  阅读(6283)  评论(0编辑  收藏  举报