2012-06-28 81 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路径可能把它修好。

相关问题