我正在尝试使用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命令无效。
请有人告诉我原因吗?我错误地使用了这个吗?
答案 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的末尾可能缺少文件名,因此服务器知道保存上传文件的位置。