Загрузка опубликованного файла на FTP - PullRequest
2 голосов
/ 27 февраля 2012

Мне нужно загрузить опубликованный файл в папку FTP на моем контроллере.

Вот что у меня сейчас.

  public  ActionResult Upload(HttpPostedFileBase file)
    {     
            string fileName = System.IO.Path.GetFileName(file.FileName);
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://10.10.0.3"+"/"+fileName);
            request.Method = WebRequestMethods.Ftp.UploadFile;

            request.Credentials = new NetworkCredential("username", "password");

            StreamReader streamReader = new StreamReader(file.InputStream);

            byte[] fileContents = Encoding.UTF8.GetBytes(streamReader.ReadToEnd());
            streamReader.Close();
            request.ContentLength = fileContents.Length;

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

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


       .....

    }

Файл загружается, у него правильное количество страниц, однако в новом файле нет текста. (это pdf, позже я проверю тип, просто попробую заставить его работать сейчас).

Спасибо!

1 Ответ

2 голосов
/ 28 февраля 2012

Вы читаете файл PDF, как если бы это были текстовые файлы.Вместо этого попробуйте это.

var sourceStream = file.InputStream;
requestStream = request.GetRequestStream();
request.ContentLength = sourceStream.Length;
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = sourceStream.Read(buffer, 0, BUFFER_SIZE);
do
{
  requestStream.Write(buffer, 0, bytesRead);
  bytesRead = sourceStream.Read(buffer, 0, BUFFER_SIZE);
} while (bytesRead > 0);
sourceStream.Close();
requestStream.Close();
response = (FtpWebResponse)request.GetResponse();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...