Использование ftp в C # для отправки файла - PullRequest
4 голосов
/ 05 мая 2010

Я пытаюсь отправить файл по 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 ]

8 голосов
/ 05 мая 2010

Я думаю, вам нужно указать путь и имя файла, который вы загружаете, поэтому я думаю, что это должно быть либо:

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

WebRequest request = WebRequest.Create("ftp://" + server + "/filename.ext");
0 голосов
/ 05 мая 2010

Когда мне приходилось использовать метод ftp, мне приходилось устанавливать некоторые флаги для объекта запроса, без него функция не работала:

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

Эти флаги зависят от сервера. Если у вас нет доступа к серверу, вы не можете знать, что здесь использовать, но вы можете проверить и посмотреть, что работает в вашей конфигурации.

И имя файла, вероятно, отсутствует в конце URI, так что сервер знает, где сохранить загруженный файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...