2010-12-14 4 views
13

Я пытаюсь загрузить файл в каталог на FTP-сервере. Я использовал этот метод с FtpWebRequest. Я хотел бы загрузить один файл в домашнем каталог для этого пользователя, но я всегда получаю следующее сообщение об ошибке:«Запрошенный URI недействителен» при загрузке с помощью FTPWebRequest

Запрашиваемый URI является недопустимым для этой команды FTP.

Что может быть проблемой? Я пробовал использовать пассивный режим, но он все тот же.

static void FtpUpload() 
{ 


    // Get the object used to communicate with the server. 
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://12.22.44.45"); 
    request.Method = WebRequestMethods.Ftp.UploadFile; 
    request.UsePassive = false; 

    // This example assumes the FTP site uses anonymous logon. 
    request.Credentials = new NetworkCredential("pokus", "password"); 

    // Copy the contents of the file to the request stream. 
    StreamReader sourceStream = new StreamReader(path); 
    byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); 
    sourceStream.Close(); 
    request.ContentLength = fileContents.Length; 

    Stream requestStream = request.GetRequestStream(); 
    requestStream.Write(fileContents, 0, fileContents.Length); 
    requestStream.Close(); 

    FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

    Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription); 

    response.Close(); 

} 
+0

Ошибка говорит о том, что нет ftp-сервера, сидящего на 12.22.44.45, желающего принять учетные данные pokus и пароля (независимо от реальной информации). Вы пытались использовать ftp для этого сервера вне кода, используя эти параметры/учетные данные? –

+0

Можете ли вы сказать нам, где вы получите сообщение об ошибке? То есть, какое заявление вызывает ошибку? –

ответ

2

Я предлагаю вам использовать WebClient, который является более высокий уровень абстракции и работает с HTTP и FTP и имеет гораздо более простой API и производительность-мудрый довольно такой же, (использует тот же API).

Адрес upload data.