0

我正在尝试使用基于此 Microsoft 文章的代码将文件上传到 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 中的设置。

4

2 回答 2

1

在没有看到完整代码的情况下,与通过 FTP 客户端手动连接到 FTP 站点时所期望的相比,我会说构造的 FTP URL/路径很可能不正确。

如果您发布您的 app.config 代码以及如何为ftpSiteand分配值ftpPath,这将有助于回答这个问题。

于 2012-06-28T15:10:04.410 回答
0

在许多情况下,您都会遇到该特定错误。

最常见的问题是您访问的路径在所允许的权限下无效,使用相对路径或更改路径可能会修复它。

于 2012-06-28T15:05:31.503 回答