C\#FTP 연결 시 경로 문제 해결 방법

5120 단어 c#ftp경로
머리말
본 고 는 주로 C\#FTP 연결 시 경로 문제 에 관 한 내용 을 소개 하고 참고 학습 을 제공 하 며 말 을 많이 하지 않 고 상세 한 소 개 를 하 겠 습 니 다.
오늘 프로젝트 를 개발 할 때 FTP 에 연결 하여 파일 을 가 져 와 야 합 니 다.그 중에서 중요 한 단 계 는 FTP 와 FTP 에 있 는 파일 이 존재 하 는 지 판단 하 는 것 입 니 다.
판단 코드 는 다음 과 같 습 니 다.

/// <summary>
  ///           FTP         
  /// </summary>
  /// <param name="ftpServerFilePath">FTP     </param>
  /// <param name="ftpUserId">FTP     </param>
  /// <param name="ftpPwd">FTP    </param>
  /// <param name="errorMsg">      </param>
  /// <returns></returns>
  private bool IsCanConnectFtp(string ftpServerFilePath, string ftpUserId, string ftpPwd, out string errorMsg)
  {
   bool flag = true;
   FtpWebResponse ftpResponse = null;
   FtpWebRequest ftpRequest = null;
   errorMsg = string.Empty;
   try
   {
    ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerFilePath));
    ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
    ftpRequest.Timeout = 2 * 1000;//       2 。
    ftpRequest.Credentials = new NetworkCredential(ftpUserId, ftpPwd);
    ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
   }
   catch (WebException exception)
   {
    ftpResponse = (FtpWebResponse)exception.Response;
    switch (ftpResponse.StatusCode)
    {
     case FtpStatusCode.ActionNotTakenFileUnavailable:
      errorMsg = "        ";
      break;
     case FtpStatusCode.ActionNotTakenFileUnavailableOrBusy:
      errorMsg = "         ,     ";
      break;
     default:
      errorMsg = "      ";
      break;
    }
    flag = false;
   }
   catch
   {
    errorMsg = "        ,     ";
    flag = true;
   }
   finally
   {
    if (ftpResponse != null)
    {
     ftpResponse.Close();
    }
   }
   return flag;
  }
ftpServerFilePath 의 경로 가"127.0.0.1\\1.doc"일 때 이상 을 던 집 니 다.이상 내용 은 잘못된 URi 입 니 다.다음 그림 입 니 다.

해결 방법
이것 은FtpWebRequest.Create연결 할 때'\'와 같은 파일 경로 식별 자 를 식별 하지 못 하기 때문에 위의 이상 을 던 질 수 있 기 때문에 들 어 오 는 매개 변 수 는'127.0.0.1/1.doc'여야 합 니 다.방법 안에서 바 꾸 든 가.코드 는 다음 과 같다.

 ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerFilePath.Replace("\\","/")));
이렇게 하면 이상 이 발생 하지 않 습 니 다.연결 여부 나 파일 이 존재 하 는 지 스스로 연결 을 확인 하 십시오.
https://msdn.microsoft.com/zh-cn/library/system.net.ftpstatuscode(v=vs.110).aspx
아니면 자체 구 글 FtpStatusCode 를 사용 하면 됩 니 다.
그러면 수 정 된 코드 는 다음 과 같다.

 /// <summary>
  ///           FTP         
  /// </summary>
  /// <param name="ftpServerFilePath">FTP     </param>
  /// <param name="ftpUserId">FTP     </param>
  /// <param name="ftpPwd">FTP    </param>
  /// <param name="errorMsg">      </param>
  /// <returns></returns>
  private bool IsCanConnectFtp(string ftpServerFilePath, string ftpUserId, string ftpPwd, out string errorMsg)
  {
   bool flag = true;
   FtpWebResponse ftpResponse = null;
   FtpWebRequest ftpRequest = null;
   errorMsg = string.Empty;
   try
   {
    ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerFilePath.Replace("\\","/")));
    ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
    ftpRequest.Timeout = 2 * 1000;//       2 。
    ftpRequest.Credentials = new NetworkCredential(ftpUserId, ftpPwd);
    ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
   }
   catch (WebException exception)
   {
    ftpResponse = (FtpWebResponse)exception.Response;
    switch (ftpResponse.StatusCode)
    {
     case FtpStatusCode.ActionNotTakenFileUnavailable:
      errorMsg = "        ";
      break;
     case FtpStatusCode.ActionNotTakenFileUnavailableOrBusy:
      errorMsg = "         ,     ";
      break;
     default:
      errorMsg = "      ";
      break;
    }
    flag = false;
   }
   catch
   {
    errorMsg = "        ,     ";
    flag = true;
   }
   finally
   {
    if (ftpResponse != null)
    {
     ftpResponse.Close();
    }
   }
   return flag;
  }
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 십시오.저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기