2012-09-06 145 views
0

可能重複:
How do you change directories using FtpWebRequest (.NET)?更改路徑上傳文件FTP

private void InitFTPTransfer(string filePath) 
    { 
     string[] ftpAddress = ddcdao.ddcAddress.Split(new string[] { "http://" }, StringSplitOptions.None); 
     FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + ftpAddress[1] + "/root/" + Path.GetFileName(filePath)); 
     request.Method = WebRequestMethods.Ftp.UploadFile; 

     request.Credentials = new NetworkCredential(Properties.Settings.Default.SysFTPID, Properties.Settings.Default.SysFTPPassword); 

     byte[] fileContents = File.ReadAllBytes(filePath); 

     request.ContentLength = fileContents.Length; 

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

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

     response.Close(); 

    } 

我上面的代碼到一個特定的文件上傳到的路徑。

在ftp裏面,我該如何設置一個特定的目錄來上傳文件?

在這種情況下,我上傳到一臺具有嵌入式linux所以它需要在/根/ somedirectory

編輯:我試過的實際,包括在請求路徑的目錄路徑的建議但是它只是在request.GetRequestStream()的一行中引發System.Net.WebException並帶有「系統錯誤」消息。

+0

@jcolebrand嵌入式Linux,而不是Windows – l46kok

+1

好了,解釋如何我的建議行不通?你顯然沒有說你已經嘗試了什麼。爲什麼把路徑放在文件名中不起作用? – jcolebrand

+0

@jcolebrand它只是在「request.GetRequestStream()」引發System.Net.WebException。異常消息是「系統錯誤」 – l46kok

回答

1

你把請求的路徑的目錄,即

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" 
         + ddcdao.ddcAddress + "/" + someDirectory 
         + "/" someFile); 
+0

我知道,我意識到在對請求進行了大約15分鐘的研究之後,我發現Skeet的答案在上面,並且認爲它的含義很明確,但是,他可以聯繫我,應該編輯.. – jcolebrand

+0

@jcolebrand我的頭髮變灰了,試圖通過代理獲取FtpWebRequest。無論如何,封閉在這裏似乎是正確的結果。很高興我們已經脫穎而出,dba mod先生;) – StuartLC

+0

haha​​haha,我從不喜歡遇到這個問題,我很高興Skeet做到了。 :p感謝配置文件掃描;-) – jcolebrand