Проблема Загрузка файла через FTP с помощью FtpWebRequest, когда файл еще не существует на FTP-сервере - PullRequest
0 голосов
/ 24 августа 2011

Это кажется тривиальной проблемой, но мой веб-поиск ответа (даже на этом сайте) заставил меня задать вопрос в явном виде.

Я загружаю файл через FTP со своего сервера на серверудаленный сервер.Мой код выглядит следующим образом ...

public void Upload(string fileToUpload)
    {
        // Get the object used to communicate with the server.
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.remoteserver.com/Data/" + fileToUpload);
        request.UsePassive = false;
        request.UseBinary = true;
        request.Method = WebRequestMethods.Ftp.UploadFile;
        request.Credentials = new NetworkCredential ("username","password");

        // Copy the contents of the file to the request stream.
        StreamReader sourceStream = new StreamReader(fileToUpload);
        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();
    }

Все это кажется очень простым.У меня проблема в том, что я получаю ошибку 550, когда файл еще не существует на удаленном сервере.Я бы предположил, что если файл не существует, то файл будет создан.Кроме того, я предполагаю, что если это произойдет, он будет перезаписан.

Поскольку это не так (по крайней мере, при записи нового файла), я бы также предположил, что я должен (а) каким-то образом проверить наличиесначала файл, и (б) создайте его, если он не существует.Но как это сделать?

Спасибо,

Майк

1 Ответ

0 голосов
/ 24 августа 2011

(комментарий преобразован в ответ)

Что вы передаете в fileToUpload, абсолютный путь к файлу, такой как c:\File.txt или просто имя файла, например File.txt?Кроме того, вы понимаете, что ваша программа работает только с текстовыми файлами, верно?

...