2012-06-28 101 views
0

我試圖將文件上載到使用的代碼基於this Microsoft ArticleFTP - 文件名不允許

我的代碼FTP服務器看起來像這樣用於測試目的:

string ftpUrl = "ftp://" + ftpSite + ftpPath + "test.txt"; 
//string ftpUrl = ftpSite; 

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl); 
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword); 
request.Method = WebRequestMethods.Ftp.UploadFile; 

StreamReader srcStream = new StreamReader(filePath); 
byte[] fileContents = Encoding.UTF8.GetBytes(srcStream.ReadToEnd()); 
request.ContentLength = fileContents.Length; 

Stream requestStream = request.GetRequestStream(); 
requestStream.Write(fileContents, 0, fileContents.Length); 
requestStream.Close(); 

FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

每次我試着上傳文件,我從FTP服務器得到一個「Filename not allowed」錯誤。如果我使用像WS_FTP這樣的FTP客戶端應用程序,我可以很好地FTP同一個文件。

有關如何解決此問題的任何想法?我已經嘗試設置主動/被動FTP模式,Keepalive和二進制模式,沒有任何運氣。

編輯

這是一個WinForms應用程序 - 文件名從打開文件對話框提示進來,FTP地址是基於App.Config中的設置。

+4

您能否請求包含ftpUrl的完整結果? – Blueberry

+0

您可以請包括ftpSite和ftpPath的來源以及您使用的是什麼值? –

+0

這是一個內部服務器,但如下格式:ftp://1.2.3.4/directory/subdirectory/test.txt – Tim

回答

1

沒有看到完整的代碼,我會說有一個非常好的機會構建FTP URL /路徑不正確,相對於你的期望它是在手動通過FTP客戶端連接到FTP站點。

如果您發佈您的app.config代碼,以及如何將值分配給ftpSiteftpPath,這將有助於回答此問題。

+0

我需要在路徑中轉義「/」...這是我在VB.NET商店中使用C#所得到的結果。 ;) – Tim

+2

@Tim退房[UriBuilder(http://msdn.microsoft.com/en-us/library/0tf6x8z6) - 這是對付尤里斯推薦的方式,並會採取的幾乎所有的字符串拼接的東西護理。 – Filburt

0

在許多情況下,您可能會遇到特定錯誤。

最常見的問題是,你正在訪問的路徑是不是允許的權限,有效的,並且使用相對路徑或改變thew路徑可能把它修好。

相關問題