我試圖通過一個簡單的C#windows應用程序將文件上傳到我的FTP服務器(EC2)。無法在FTP(C#)中創建新目錄
問題我有:如果該目錄已經存在,我可以在其中創建一個文件。但是,如果該目錄不存在,我無法創建目錄。
我檢查了什麼:我仔細檢查了寫入權限。我通過WinSCP登錄,我可以在那裏創建新的目錄,沒有任何問題。我已授予用戶權限。
我的代碼:
private async void FileFTPUpload(string sourcefilepath, string folderPath) {
String ftpurl = @"ftp://xx.xxx.xxx.xxx/" + "trial/12/1.txt";
Console.WriteLine("Ftp url : " + ftpurl);
String ftpusername = "myUserName";
String ftppassword = "myPassword";
try {
string filename = Path.GetFileName(sourcefilepath);
string ftpfullpath = ftpurl;
WebRequest ftp = WebRequest.Create(ftpurl);
ftp.Method = WebRequestMethods.Ftp.MakeDirectory;
ftp.Credentials = new NetworkCredential(ftpusername, ftppassword);
ftp.Method = WebRequestMethods.Ftp.UploadFile;
FileStream fs = File.OpenRead(sourcefilepath);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, 0, buffer.Length);
ftpstream.Close();
} catch (Exception ex) {
Console.WriteLine("Exception Occurred : " + ex);
//throw ex;
}
}
現在,如果 「試/ 12 /」 存在,那麼的1.txt將會作出修改。否則,我得到的錯誤:
System.Net.WebException: The remote server returned an error: (553) File name not allowed.
我不知道發生了什麼,什麼不是。可以使用一些援助。
謝謝。
編輯:當我這樣做: String ftpurl = @「ftp://xx.xxx.xxx.xxx/」+「trial」;
它不會建立一個目錄。我只是創建一個名爲「試用」的文件。
在做這些:
String ftpurl = @"ftp://xx.xxx.xxx.xxx/" + "trial/";
給出了同樣的錯誤553
您設置了'ftp.Method'兩次。因此第一個分配從未被使用。這不起作用,你需要將你的代碼分成兩個請求。 – NtFreX
我已更新我的問題。請看看這個。 – Xonshiz