我正在尝试使用基于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中的设置。
答案 0 :(得分:1)
在没有看到完整代码的情况下,我会说构建的FTP URL /路径很可能与您通过FTP客户端手动连接到FTP站点时的预期不一致。
如果您发布app.config代码以及如何为ftpSite
和ftpPath
分配值,那么回答此问题会很有帮助。
答案 1 :(得分:0)
在许多情况下,您可以获得该特定错误。
最常见的问题是您访问的路径无法通过允许的权限生效,并且使用相对路径或更改路径可能会将其修复。