中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何解決連接FTP時的路徑問題

發布時間:2021-07-16 14:52:58 來源:億速云 閱讀:203 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“C#如何解決連接FTP時的路徑問題”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“C#如何解決連接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,如下圖

C#如何解決連接FTP時的路徑問題

解決方法

這是因為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

或者自行 google FtpStatusCode 即可。

那么修改后的代碼為:(關于C# 連接完整的FTP 可以仔細 google 查詢,網上多的是,這樣就不累述了)

 /// <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;
  }

以上是“C#如何解決連接FTP時的路徑問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ftp
AI

双流县| 莎车县| 洛川县| 敖汉旗| 南涧| 阳山县| 通江县| 郯城县| 清水河县| 昭觉县| 哈尔滨市| 蒲城县| 常州市| 田林县| 靖宇县| 石棉县| 盐津县| 麻栗坡县| 樟树市| 西盟| 望奎县| 新巴尔虎左旗| 马龙县| 辽阳县| 绍兴县| 潍坊市| 沅陵县| 沙坪坝区| 历史| 丹棱县| 揭阳市| 上虞市| 岑巩县| 商河县| 墨竹工卡县| 漾濞| 双江| 响水县| 武川县| 枣阳市| 财经|