C#实现FTP上传文件的方法

1.通过用FTP进行上传文件,首先要实现建立FTP连接,一般建立FTP连接,需要知道FTP配置有关的信息。一般要在Bean中建立一个ServiceFileInfo.cs文件进行记录,一般需要FTP地址、登录用户名和登录密码。然后通过其他页面进行访问读取。代码样式如下:

class ServiceFileInfo
  {
      // service1
      public static string txtFilePath = @"ftp://12.128.128.01/FileName/";
      //userid & password
      public static string txtUID = "username";
      public static string txtPWD = "password";
  }

2.通过主方法读取Bean文件下面的的ServiceFileInfo.cs文件的信息,去实现建立FTP连接。这里还需要清楚的知道你上传文件的路径(Path)和文件名称(FileName)。根据这些信息主方法去调用写着Bean中的另外一个ftpOperation.cs 文件(这个.cs文件中主要写一些关于FTP的操作方法),进行FTP访问操作。

  • 主方法调用FTP操作代码
ExecutionResult exeRes = this.ftpOperation.UploadFile(textFilePath, txtUID, txtPWD, Path + "/" + FileName + ".txt");//.txt为文件的后缀名
  • Bean文件中ftpOperation.cs文件关于FTP操作的方法
public ExecutionResult UploadFile(string vIMSPath, string vUID, string vPassword, string vLocalPath)
      {
          ExecutionResult result = new ExecutionResult();
          result = connectState(vIMSPath, vUID, vPassword, vLocalPath);//调用下面代码方法
          if (result.Status)
          {
              File.Delete(vLocalPath);
          }
          return result;
      }

connectState()方法

public static ExecutionResult connectState(string vIMSPath, string vUID, string vPassword, string fileName)
      {
          string operater = "";
          bool Flag = false;
          ExecutionResult result;
          result = new ExecutionResult();
          lock (lockObj)
          {
              try
              {
                  operater = "Connet to FTP";
                  FTPOperation ftp = new FTPOperation(new Uri(vIMSPath), vUID, vPassword);
                  operater = "Upload file";
                  Flag = ftp.UploadFile(fileName, Path.GetFileName(fileName), true);
                  if (Flag)
                  {
                      result.Status = true;
                      result.Message = "Send to server OK";
                  }
              }
              catch (Exception ex)
              {
                  result.Status = false;
                  result.Anything = "Mail";
                  result.Message = operater + ":" + ex.Message;
              }
          }
          return result;
      }
  • UploadFile()方法
public bool UploadFile(string LocalFullPath, string RemoteFileName, bool OverWriteRemoteFile)
      {
          bool result;
          try
          {
              bool flag = !this.IsValidFileChars(RemoteFileName) || !this.IsValidFileChars(Path.GetFileName(LocalFullPath)) || !this.IsValidPathChars(Path.GetDirectoryName(LocalFullPath));
              if (flag)
              {
                  throw new Exception("非法文件名或目录名!");
              }
              bool flag2 = File.Exists(LocalFullPath);
              if (!flag2)
              {
                  throw new Exception("本地文件不存在!");
              }
              FileStream fileStream = new FileStream(LocalFullPath, FileMode.Open, FileAccess.Read);
              byte[] array = new byte[fileStream.Length];
              fileStream.Read(array, 0, (int)fileStream.Length);
              fileStream.Close();
              result = this.UploadFile(array, RemoteFileName, OverWriteRemoteFile);
          }
          catch (Exception ex)
          {
              this.ErrorMsg = ex.ToString();
              throw ex;
          }
          return result;
      }



public bool UploadFile(byte[] FileBytes, string RemoteFileName)
      {
          bool flag = !this.IsValidFileChars(RemoteFileName);
          if (flag)
          {
              throw new Exception("非法文件名或目录名!");
          }
          return this.UploadFile(FileBytes, RemoteFileName, false);
      }


public bool UploadFile(byte[] FileBytes, string RemoteFileName, bool OverWriteRemoteFile)
      {
          bool result;
          try
          {
              bool flag = !this.IsValidFileChars(RemoteFileName);
              if (flag)
              {
                  throw new Exception("非法文件名!");
              }
              bool flag2 = !OverWriteRemoteFile && this.FileExist(RemoteFileName);
              if (flag2)
              {
                  throw new Exception("FTP服务上面已经存在同名文件!");
              }
              this.Response = this.Open(new Uri(this.Uri.ToString() + RemoteFileName), "STOR");
              Stream requestStream = this.Request.GetRequestStream();
              MemoryStream memoryStream = new MemoryStream(FileBytes);
              byte[] array = new byte[1024];
              int num = 0;
              for (;;)
              {
                  int num2 = memoryStream.Read(array, 0, array.Length);
                  bool flag3 = num2 == 0;
                  if (flag3)
                  {
                      break;
                  }
                  num += num2;
                  requestStream.Write(array, 0, num2);
              }
              requestStream.Close();
              this.Response = (FtpWebResponse)this.Request.GetResponse();
              memoryStream.Close();
              memoryStream.Dispose();
              FileBytes = null;
              result = true;
          }
          catch (Exception ex)
          {
              this.ErrorMsg = ex.ToString();
              throw ex;
          }
          return result;
      }

关于C#实现FTP上传文件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程宝库

1.首先,需要指定获取的文件夹,以及获取文件的文件名;文件夹:strLocalPath = System.Windows.Forms.Application.StartupPath + "\\ExcelTe ...