none
FtpWebRequest RRS feed

  • 問題

  • FTPclient
    public void UploadFile(string SourceFilePath, string TargetFilePath)

    如果Targetfilepath是資料夾路徑  "/trx/123.xml",我該如何判斷FTPserver上trx這個資料夾不存在

    download的情況 
    public void UploadFile(string SourceFilePath, string TargetFilePath)
    TargetFilePath 有可能是FTPserver上檔案路徑 或是FTPserver上資料夾路徑,該怎麼判斷呢?
    檔案路徑就是單一下載 ,如果是資料夾路徑,我要將資料夾內所有的檔案下載
    主要的問題是 我該怎麼判斷傳來的路徑在ftpserver上存不存在和路徑是資料夾還是檔案


    剛發現正則表達式似乎可以解 判斷路徑是資料夾還是檔案,不過滿難懂的
    如果使用表達式判斷 ,接下來該如何判斷是否存在呢?
    • 已編輯 ericstone 2009年3月19日 上午 09:27
    2009年3月19日 上午 08:19

解答

  • 若是要建立目錄,請參考以下範例
    其實,所有 FtpWebRequest 的動作,都會透過 FtpWebRequest.Method 來設定。它可設定的項目全部包含在 WebRequestMethods.Ftp 中。


    1         public bool CreateForder(string sFullPath , string sUserName , string sPassword)  
    2         {  
    3             bool bRtn = false;  
    4             try 
    5             {  
    6                 FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(sFullPath);  
    7                 ftpRequest.Proxy = null;  
    8                 ftpRequest.Credentials = new NetworkCredential(sUserName, sPassword);  
    9  
    10                 ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;  
    11  
    12                 FtpWebResponse CreateForderResponse = (FtpWebResponse)ftpRequest.GetResponse();  
    13                 Console.WriteLine("Upload status: {0}", CreateForderResponse.StatusDescription);  
    14                 if (CreateForderResponse.StatusCode == FtpStatusCode.CommandOK)  
    15                     bRtn = true;  
    16                 else 
    17                     Console.WriteLine("CreateForder 錯誤:{0}", CreateForderResponse.StatusCode.ToString());  
    18                 CreateForderResponse.Close();  
    19             }  
    20             catch (Exception ex)  
    21             {  
    22                 Console.WriteLine("CreateForder 錯誤:{0}", ex.Message);  
    23             }  
    24  
    25             return bRtn;  
    26         } 

    Terence
    • 已標示為解答 ericstone 2009年3月25日 上午 02:34
    2009年3月20日 上午 08:36

所有回覆

  • HI,

    一般就直接下載, 如果資料夾或檔案不存在, FTP server自然會回報錯誤, 請參考:
    http://www.codeproject.com/KB/IP/SimpleFTPDemo.aspx
    2009年3月19日 上午 09:27
  • …重點在於不存在的話 我要建立資料夾。
    2009年3月19日 上午 09:29
  • HI,

    您可以根據範例中FTP SERVER的回報錯誤, 再執行建立資料夾的動作
    2009年3月19日 上午 09:49
  • 若是要建立目錄,請參考以下範例
    其實,所有 FtpWebRequest 的動作,都會透過 FtpWebRequest.Method 來設定。它可設定的項目全部包含在 WebRequestMethods.Ftp 中。


    1         public bool CreateForder(string sFullPath , string sUserName , string sPassword)  
    2         {  
    3             bool bRtn = false;  
    4             try 
    5             {  
    6                 FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(sFullPath);  
    7                 ftpRequest.Proxy = null;  
    8                 ftpRequest.Credentials = new NetworkCredential(sUserName, sPassword);  
    9  
    10                 ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;  
    11  
    12                 FtpWebResponse CreateForderResponse = (FtpWebResponse)ftpRequest.GetResponse();  
    13                 Console.WriteLine("Upload status: {0}", CreateForderResponse.StatusDescription);  
    14                 if (CreateForderResponse.StatusCode == FtpStatusCode.CommandOK)  
    15                     bRtn = true;  
    16                 else 
    17                     Console.WriteLine("CreateForder 錯誤:{0}", CreateForderResponse.StatusCode.ToString());  
    18                 CreateForderResponse.Close();  
    19             }  
    20             catch (Exception ex)  
    21             {  
    22                 Console.WriteLine("CreateForder 錯誤:{0}", ex.Message);  
    23             }  
    24  
    25             return bRtn;  
    26         } 

    Terence
    • 已標示為解答 ericstone 2009年3月25日 上午 02:34
    2009年3月20日 上午 08:36
  • 推薦幾篇個人覺得不錯的參考資料,裡面有完整的FTP範例。
    • http://msdn.microsoft.com/zh-tw/library/ms233623(VS.80).aspx
    • http://tw.myblog.yahoo.com/jeff-yeh/article?mid=185
    2009年4月13日 上午 01:03