FTP - 不允许使用文件名

时间:2012-06-28 14:57:59

标签: c# winforms ftp

我正在尝试使用基于this Microsoft Article

的代码将文件上传到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服务器返回“文件名不允许”错误。如果我使用像WS_FTP这样的FTP客户端应用程序,我可以正常FTP相同的文件。

有关如何纠正此问题的任何想法?我已经尝试过设置主动/被动FTP模式,keepalive和二进制模式而没有任何运气。

修改

这是一个winforms应用程序 - 文件名来自OpenFileDialog提示符,FTP地址基于App.Config中的设置。

2 个答案:

答案 0 :(得分:1)

在没有看到完整代码的情况下,我会说构建的FTP URL /路径很可能与您通过FTP客户端手动连接到FTP站点时的预期不一致。

如果您发布app.config代码以及如何为ftpSiteftpPath分配值,那么回答此问题会很有帮助。

答案 1 :(得分:0)

在许多情况下,您可以获得该特定错误。

最常见的问题是您访问的路径无法通过允许的权限生效,并且使用相对路径或更改路径可能会将其修复。