FTP客户端的创建并上传本地文件

1.首先打开VS并创建窗体应用程序

做一个简单的测试程序demo,主要测试FTP的上传功能。

2.《获取远程文件夹内容》这个按钮是为了获取上传的文件,代码实现如下:

3.《打开上传文件夹并上传》这个按钮是为了把本地文件上传到FTP服务器,代码实现如下:

 

public class FtpClient
  {
      private string ftpServer;
      private NetworkCredential credentials;

      public FtpClient(string ftpServer, string username, string password)
      {
          this.ftpServer = ftpServer;
          this.credentials = new NetworkCredential(username, password);
      }

     
      /// <summary>
      /// 下载文件
      /// </summary>
      /// <param name="remotePath"></param>
      /// <param name="localPath"></param>
      /// <returns></returns>
      public bool DownloadFile(string remotePath, string localPath)
      {
          try
          {
              string uri = $"ftp://{ftpServer}/{remotePath}";
              FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
              request.Method = WebRequestMethods.Ftp.DownloadFile;
              request.Credentials = credentials;

              using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
              using (Stream responseStream = response.GetResponseStream())
              using (FileStream fileStream = new FileStream(localPath, FileMode.Create))
              {
                  responseStream.CopyTo(fileStream);
              }

              return true;
          }
          catch
          {
              return false;
          }
      }

     
      /// <summary>
      /// 上传文件到FTP服务器
      /// </summary>
      /// <param name="path"></param>
      /// <param name="name"></param>
      /// <returns></returns>
      public bool UploadFile(string path, string name)
      {
          FileInfo f = new FileInfo(path);
          path = $"ftp://{ftpServer}/{name}"; //这个路径是我要传到ftp目录下的这个目录下
          FtpWebRequest reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
          reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
          reqFtp.UsePassive = false;//只需要添加这一句话 reqFtp.UseBinary= true;
          reqFtp.Credentials = credentials;

          reqFtp.KeepAlive = false;
          reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
          reqFtp.ContentLength = f.Length;
          int buffLength = 2048;
          byte[] buff = new byte[buffLength];
          int contentLen;
          FileStream fs = f.OpenRead();
          try
          {
              Stream strm = reqFtp.GetRequestStream();
              contentLen = fs.Read(buff, 0, buffLength);
              while (contentLen != 0)
              {
                  strm.Write(buff, 0, contentLen);
                  contentLen = fs.Read(buff, 0, buffLength);
              }

              strm.Close();
              fs.Close();
              return true;
          }
          catch (Exception ex)
          {
              return false;
          }

      }

      /// <summary>
      /// 判断FTP服务器文件名是否存在
      /// </summary>
      /// <param name="ftpUrl"></param>
      /// <returns></returns>
      public  bool FileExists(string ftpUrl)
      {
          try
          {
              // 创建FtpWebRequest对象
              ftpUrl = $"ftp://{ftpServer}/{ftpUrl}";
              FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl);
              request.Method = WebRequestMethods.Ftp.GetFileSize; // 设置FTP方法
              request.Credentials = credentials; // 设置登录凭证

              // 发送请求并获取响应
              FtpWebResponse response = (FtpWebResponse)request.GetResponse();

              // 获取文件大小,如果文件存在,这里会返回大小
              long size = response.ContentLength;

              // 关闭连接和释放资源
              response.Close();

              // 文件存在
              return true;
          }
          catch (WebException ex)
          {
              // 文件不存在或其他错误
              return false;
          }
      }

  }
 

4.感谢浏览,之所以上传博客,为了整理自己以前做过的测试笔记,以后会一一整理并上传。

5.附上测试demo。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值