ftp服务器搭建部署与C#实现ftp文件的上传
一、简介
FTP是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文本协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在ftp的使用当中,用户经常遇到两个概念:“下载”(Download)和“上传”(upload)。“下载”文件就是从远程主机拷贝文件至自己的计算机上;“上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
二、搭建FTP服务器步骤(Window sserver 2016为例)
- 安装FTP服务器及部署 
  
-   
 
-   
 
 
 
- 添加FTP站点
 
- IP地址填本机地址(不填则是本机全部IP),端口默认21,SSL是一种数字加密证书,可申请,在此没有可选择无。
 
 
- 添加ftp上传下载专用用户(也可以选择不添加,使用管理员用户也OK)
-   
-   
- 到此ftp服务器安装和搭建部署,就完成了。
 
三、登录测试
- 浏览器中输入命令 ftp://IP:端口,弹窗提示输入刚刚新建的用户名密码即可。
- 用户名和密码输入正确的话就会出现公开的路径。
 
四、C#上传文件到FTP服务器
-     - 
      
- 
      /// <summary>
- 
      /// FTP的服务器地址,格式为ftp://192.168.1.234:8021/。
- 
      /// </summary>
- 
      public string FTPCONSTR { get; set; }
- 
      /// <summary>
- 
      /// //FTP服务器的用户名
- 
      /// </summary>
- 
      private string FTPUSERID { get; set; }
- 
      /// <summary>
- 
      /// //FTP服务器的密码
- 
      /// </summary>
- 
      private string FTPPASSWORD { get; set; }
- 
      private string ftpIP { get; set; }
- 
      private string ftpPort { get; set; }
 
- 
      
-  - 
      public FTPHelper(string ip = "IP", string username = "登录用户名", string password = "用户密码", string port = "端口")
- 
      {
- 
      FTPCONSTR = string.Format( "{0}://{1}:{2}/", "ftp", ip, port);
- 
      FTPUSERID = username;
- 
      FTPPASSWORD = password;
- 
      }
 
- 
      
-     - 
      /// <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 = FTPCONSTR + name; //这个路径是我要传到ftp目录下的这个目录下
- 
      FtpWebRequest reqFtp = (FtpWebRequest)FtpWebRequest.Create( new Uri(path));
- 
      reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
- 
      reqFtp.UsePassive = false; //只需要添加这一句话
- 
      reqFtp.UseBinary = true;
- 
      reqFtp.Credentials = new NetworkCredential(FTPUSERID, FTPPASSWORD);
- 
      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;
- 
      }
- 
      }
 
- 
      
- 调用
-   - 
      string txtFilePath= "";
- 
      try
- 
      {
- 
      OpenFileDialog openFileDialogTemp = new OpenFileDialog();
- 
      openFileDialogTemp.Title = "选择要上传的文件";
- 
      DialogResult dr = openFileDialogTemp.ShowDialog();
- 
      if (!File.Exists(openFileDialogTemp.FileName))
- 
      {
- 
      GLOBALS.msgbox( "内容为空,请选择文件");
- 
      return;
- 
      }
- 
      if (dr == DialogResult.OK)
- 
      {
- 
      txtFilePath= openFileDialogTemp.FileName;
- 
      string filePath = this.txtFilePath.Text;
- 
      
- 
      }
- 
      }
- 
      catch (Exception ex)
- 
      {
- 
      
- 
      }
- 
      string id = DateTime.Now.ToString( "yyyyMMddHHmmss");
- 
      string isPath = DateTime.Now.ToString( "yyyy-MM-dd");
- 
      string filePath = txtFilePath;
- 
      string uploadUrl = isPath + "\\" + id + ".jpg";
- 
      FTPHelper FTPHelper = new FTPHelper();
- 
      bool uploadresult = FTPHelper.UploadFile(filePath, uploadUrl);
 
- 
      
转载:https://blog.csdn.net/qq_37192571/article/details/125560502
查看评论
					