2012-09-06 77 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