在C#中使用ftp发送文件

时间:2010-05-05 11:28:22

标签: c# .net ftp

我正在尝试使用ftp发送文件。我有以下代码:

string server = "x.x.x.x";  // Just the IP Address 

FileStream stream = File.OpenRead(filename);
byte[] buffer = new byte[stream.Length];

WebRequest request = WebRequest.Create("ftp://" + server);
request.Method = WebRequestMethods.Ftp.UploadFile;            
request.Credentials = new NetworkCredential(username, password);

Stream reqStream = request.GetRequestStream(); // This line fails
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Close();

但是当我运行它时,我收到以下错误:

请求的URI对此FTP命令无效。

请有人告诉我原因吗?我错误地使用了这个吗?

2 个答案:

答案 0 :(得分:8)

我认为你需要指定你上传的路径和文件名,所以我认为它应该是:

WebRequest request = WebRequest.Create("ftp://" + server + "/");

WebRequest request = WebRequest.Create("ftp://" + server + "/filename.ext");

答案 1 :(得分:0)

当我不得不使用ftp方法时,我不得不在请求对象上设置一些标志,没有它,该功能不起作用:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpPath);
request.KeepAlive = true/false;
request.UsePassive = true/false;
request.UseBinary = xxx;

这些标志取决于服务器,如果您无法访问服务器,那么您无法知道在这里使用什么,但您可以测试并查看配置中的工作原理。

URI的末尾可能缺少文件名,因此服务器知道保存上传文件的位置。