C# FTP 自动创建目录/上传文件

来源:互联网 发布:mac吃鸡 编辑:程序博客网 时间:2024/05/16 18:44
//上传文件  public static Boolean FtpUpload(string ftpPath,string localFile)  {      //检查目录是否存在,不存在创建      FtpCheckDirectoryExist(ftpPath);      FileInfo fi = new FileInfo(localFile);      FileStream fs = fi.OpenRead();      long length = fs.Length;      FtpWebRequest req = (FtpWebRequest)WebRequest.Create(ftpServerIP + ftpPath + fi.Name);      req.Credentials = new NetworkCredential(ftpUserID, ftpPassword);      req.Method = WebRequestMethods.Ftp.UploadFile;      req.ContentLength = length;      req.Timeout = 10 * 1000;      try      {          Stream stream = req.GetRequestStream();          int BufferLength = 2048; //2K             byte[] b = new byte[BufferLength];          int i;          while ((i = fs.Read(b, 0, BufferLength)) > 0)          {              stream.Write(b, 0, i);          }          stream.Close();          stream.Dispose();      }      catch (Exception e)      {          ErrLog(e.Message + e.StackTrace);          return false;      }      finally      {          fs.Close();          req.Abort();      }      req.Abort();      return true;  }    //判断文件的目录是否存,不存则创建  public static void FtpCheckDirectoryExist(string destFilePath)  {      string fullDir = FtpParseDirectory(destFilePath);      string[] dirs = fullDir.Split('/');      string curDir = "/";      for (int i = 0; i < dirs.Length; i++)      {          string dir = dirs[i];          //如果是以/开始的路径,第一个为空            if (dir != null && dir.Length > 0)          {              try              {                  curDir += dir + "/";                  FtpMakeDir(curDir);              }              catch (Exception)              {}          }      }  }    public static string FtpParseDirectory(string destFilePath)  {      return destFilePath.Substring(0, destFilePath.LastIndexOf("/"));  }      //创建目录  public static Boolean FtpMakeDir(string localFile)  {      FtpWebRequest req = (FtpWebRequest)WebRequest.Create(ftpServerIP + localFile);      req.Credentials = new NetworkCredential(ftpUserID, ftpPassword);      req.Method = WebRequestMethods.Ftp.MakeDirectory;      try      {          FtpWebResponse response = (FtpWebResponse)req.GetResponse();          response.Close();      }      catch (Exception)      {          req.Abort();          return false;      }      req.Abort();      return true;  } 

0 0
原创粉丝点击