2017-10-13 113 views
0

上沒有創建directorys的ftp這是我想上傳到FTP服務器的路徑:C#上傳與FTP服務器

_ftp:// FTP服務器/產品/ productxx/versionxx/releasexx /交付/data.zip

問題是服務器上不存在文件夾「productxx/versionxx/releasexx/delivery /」
我可以自動創建它們同時上傳在C#中的.zip文件

我此刻的編碼是:

   FtpWebRequest request = 
        (FtpWebRequest)WebRequest.Create(pathToFtp); 
       // Method set to UploadFile 
       request.Method = WebRequestMethods.Ftp.UploadFile; 
       // set password and username 
       request.Credentials = new NetworkCredential(UserName, Password); 
       // write MemoryStream in ftpStream 
       using (Stream ftpStream = request.GetRequestStream()) 
       { 
        memoryStream.CopyTo(ftpStream); 
       } 

我收到System.Net.WebException:「無法連接到FTP:(553)文件中使用的名稱不得 「在」 (流ftpStream = request.GetRequestStream())

但如果我的pathToFtp是_ftp://ftp-server/products/data.zip它運行良好

回答

1

其中一種可用的請求方法是WebRequestMethods.Ftp.MakeDirectory。你應該可以用它來做你想做的事。

像這樣的東西(雖然我沒有測試它),應該做的伎倆:

async Task CreateDirectory(string path) 
{ 
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(path); 
    request.Method = WebRequestMethods.Ftp.MakeDirectory; 

    using (var response = (FtpWebResponse)(await request.GetResponseAsync())) 
    { 
     Console.WriteLine($"Created: {path}"); 
    } 
} 

它在這裏How do I create a directory on ftp server using C#?

+0

更詳細的回答謝謝你,它不會給一個方法巫婆創建目錄直接如果不存在IAM權利? – ARX

+1

有'WebRequestMethods.Ftp.ListDirectory'和'WebRequestMethods.Ftp.ListDirectoryDe​​tails'請求方法可以幫助你。您可以嘗試創建目錄,無論如何處理響應。 據我所知,沒有「創建如果不存在」的命令。 –

+0

使用'await request.GetResponseAsync()'什麼點?直接使用'request.GetResponse()'。 –