C#FTP方式文件上传远程服务器

C#实现客户端与服务器端的文件传输

          实现文件的异地传输,可以采用http协议  ftp等协议;ftp传输的原理同样也是数据流的IO数据交换。关键的4步有:1.客户端与服务端的连接;2.客户端的文件流转换;
3.I/O数据传输;4.服务端数据的写入.


  1. public class FtpWeb  
  2. {  
  3.     string ftpRemotePath;  
  4.     string ftpUserID;  
  5.     string ftpPassword;  
  6.     string ftpURI;  
  7.     string ftpServerIP;  
  8.   
  9.     /// <summary>  
  10.     /// 连接FTP  
  11.     /// </summary>  
  12.     /// <param name="FtpServerIP">FTP连接地址</param>  
  13.     /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>  
  14.     /// <param name="FtpUserID">用户名</param>  
  15.     /// <param name="FtpPassword">密码</param>  
  16.     public FtpWeb(string FtpServerIP, string FtpUserID, string FtpPassword)  
  17.     {  
  18.         ftpServerIP = FtpServerIP;  
  19.         ftpUserID = FtpUserID;  
  20.         ftpPassword = FtpPassword;  
  21.         ftpURI = FtpServerIP + "/";  
  22.     }  
  23.   
  24.     /// <summary>  
  25.     /// 上传  
  26.     /// </summary>  
  27.     /// <param name="filename"></param>  
  28.     public void Upload(string filename)  
  29.     {  
  30.         FileInfo fileInf = new FileInfo(filename);  
  31.         string uri = ftpURI + fileInf.Name;  
  32.         FtpWebRequest reqFTP;  
  33.   
  34.         reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));  
  35.         reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);  
  36.         reqFTP.KeepAlive = false;  
  37.         reqFTP.Method = WebRequestMethods.Ftp.UploadFile;  
  38.         reqFTP.UseBinary = true;  
  39.         reqFTP.ContentLength = fileInf.Length;  
  40.         int buffLength = 2048;  
  41.         byte[] buff = new byte[buffLength];  
  42.         int contentLen;  
  43.         FileStream fs = fileInf.OpenRead();  
  44.         try  
  45.         {  
  46.             Stream strm = reqFTP.GetRequestStream();  
  47.             contentLen = fs.Read(buff, 0, buffLength);  
  48.             while (contentLen != 0)  
  49.             {  
  50.                 strm.Write(buff, 0, contentLen);  
  51.                 contentLen = fs.Read(buff, 0, buffLength);  
  52.             }  
  53.             strm.Close();  
  54.             fs.Close();  
  55.         }  
  56.         catch (Exception ex)  
  57.         {  
  58.             throw ex;  
  59.         }  
  60.     }  
  61.     /// <summary>  
  62.     /// 上传  
  63.     /// </summary>  
  64.     /// <param name="filename"></param>  
  65.     public void Upload2(string ftpuri, string filename)  
  66.     {  
  67.         FileInfo fileInf = new FileInfo(filename);  
  68.         string uri = ftpuri;  
  69.         FtpWebRequest reqFTP;  
  70.   
  71.         reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));  
  72.         reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);  
  73.         reqFTP.KeepAlive = false;  
  74.         reqFTP.Method = WebRequestMethods.Ftp.UploadFile;  
  75.         reqFTP.UseBinary = true;  
  76.         reqFTP.ContentLength = fileInf.Length;  
  77.         int buffLength = 2048;  
  78.         byte[] buff = new byte[buffLength];  
  79.         int contentLen;  
  80.         FileStream fs = fileInf.OpenRead();  
  81.         try  
  82.         {  
  83.             Stream strm = reqFTP.GetRequestStream();  
  84.             contentLen = fs.Read(buff, 0, buffLength);  
  85.             while (contentLen != 0)  
  86.             {  
  87.                 strm.Write(buff, 0, contentLen);  
  88.                 contentLen = fs.Read(buff, 0, buffLength);  
  89.             }  
  90.             strm.Close();  
  91.             fs.Close();  
  92.         }  
  93.         catch (Exception ex)  
  94.         {  
  95.             throw ex;  
  96.         }  
  97.     }  
  98.     /// <summary>  
  99.     /// 下载  
  100.     /// </summary>  
  101.     /// <param name="filePath"></param>  
  102.     /// <param name="fileName"></param>  
  103.     public void Download(string filePath, string ftpUri, string fileName)  
  104.     {  
  105.         FtpWebRequest reqFTP;  
  106.         try  
  107.         {  
  108.             FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);  
  109.   
  110.             reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpUri));  
  111.             reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;  
  112.             reqFTP.UseBinary = true;  
  113.             reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);  
  114.             FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();  
  115.             Stream ftpStream = response.GetResponseStream();  
  116.             long cl = response.ContentLength;  
  117.             int bufferSize = 2048;  
  118.             int readCount;  
  119.             byte[] buffer = new byte[bufferSize];  
  120.   
  121.             readCount = ftpStream.Read(buffer, 0, bufferSize);  
  122.             while (readCount > 0)  
  123.             {  
  124.                 outputStream.Write(buffer, 0, readCount);  
  125.                 readCount = ftpStream.Read(buffer, 0, bufferSize);  
  126.             }  
  127.   
  128.             ftpStream.Close();  
  129.             outputStream.Close();  
  130.             response.Close();  
  131.         }  
  132.         catch (Exception ex)  
  133.         {  
  134.             throw ex;  
  135.         }  
  136.     }  
  137.   
  138.   
  139.     /// <summary>  
  140.     /// 删除文件  
  141.     /// </summary>  
  142.     /// <param name="fileName"></param>  
  143.     public void Delete(string fileName)  
  144.     {  
  145.         try  
  146.         {  
  147.             string uri = fileName;  
  148.             FtpWebRequest reqFTP;  
  149.             reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));  
  150.   
  151.             reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);  
  152.             reqFTP.KeepAlive = false;  
  153.             reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;  
  154.   
  155.             string result = String.Empty;  
  156.             FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();  
  157.             long size = response.ContentLength;  
  158.             Stream datastream = response.GetResponseStream();  
  159.             StreamReader sr = new StreamReader(datastream);  
  160.             result = sr.ReadToEnd();  
  161.             sr.Close();  
  162.             datastream.Close();  
  163.             response.Close();  
  164.         }  
  165.         catch (Exception ex)  
  166.         {  
  167.             throw ex;  
  168.         }  
  169.     }  
  170.   
  171.     /// <summary>  
  172.     /// 删除文件夹  
  173.     /// </summary>  
  174.     /// <param name="folderName"></param>  
  175.     public void RemoveDirectory(string folderName)  
  176.     {  
  177.         try  
  178.         {  
  179.             string uri = ftpURI + folderName;  
  180.             FtpWebRequest reqFTP;  
  181.             reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));  
  182.   
  183.             reqFTP.Credentials = new
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值