Проблема со скачкой файла с ФТП
От: PhiberOptik Украина  
Дата: 19.10.08 18:46
Оценка:
Которйы день бьюсь над этим кодом и ничего не фыходит!
файл вроде качаеться но совсем нитого размера и содержания которого должен быть.
в текстбоксе прописан полный путь к файлу на фтп в виде(фтп://tralyalya.com/qwe/asd/zxc.zip)
Помогите разобраться где ошибка и почему оно работает неправильно.

private void button1_Click(object sender, EventArgs e)
{
    FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(textBox1.Text);
    ftpRequest.UseBinary = true;
    FtpWebResponse ftpResonse = (FtpWebResponse)ftpRequest.GetResponse();
    Stream responseStrem = ftpResonse.GetResponseStream();
    StreamReader sr = new StreamReader(responseStrem);
    string fileName = Path.GetFileName(ftpRequest.RequestUri.AbsolutePath);
    FileStream fs = new FileStream("c:\\"+fileName, FileMode.Create);
    byte[] buf = new byte[1024];
    int byteRead;
    while (true)
    {
        byteRead = responseStrem.Read(buf, 0, buf.Length);
        if (byteRead == 0)
        break;
        fs.Write(buf, 0, buf.Length);
    }            
}
Жизнь — дерьмо которое постоянно приходиться разгребать.
Re: Проблема со скачкой файла с ФТП
От: zhech  
Дата: 20.10.08 06:42
Оценка:
Скачай нормальный ftpclient. мелкомягких он немного глючит пропробуй www.enterprisedt.com
Re: Проблема со скачкой файла с ФТП
От: pt4h Беларусь http://dzmitryhuba.blogspot.com/
Дата: 20.10.08 07:40
Оценка: 3 (1) +1
Здравствуйте, PhiberOptik, Вы писали:

PO>Которйы день бьюсь над этим кодом и ничего не фыходит!

PO>файл вроде качаеться но совсем нитого размера и содержания которого должен быть.
PO>в текстбоксе прописан полный путь к файлу на фтп в виде(фтп://tralyalya.com/qwe/asd/zxc.zip)
PO>Помогите разобраться где ошибка и почему оно работает неправильно.

У вас ошибка в коде.

PO>
PO>private void button1_Click(object sender, EventArgs e)
PO>{
PO>    FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(textBox1.Text);
PO>    ftpRequest.UseBinary = true;
PO>    FtpWebResponse ftpResonse = (FtpWebResponse)ftpRequest.GetResponse();
PO>    Stream responseStrem = ftpResonse.GetResponseStream();
PO>    StreamReader sr = new StreamReader(responseStrem);
PO>    string fileName = Path.GetFileName(ftpRequest.RequestUri.AbsolutePath);
PO>    FileStream fs = new FileStream("c:\\"+fileName, FileMode.Create);
PO>    byte[] buf = new byte[1024];
PO>    int byteRead;
PO>    while (true)
PO>    {
PO>        byteRead = responseStrem.Read(buf, 0, buf.Length);
PO>        if (byteRead == 0)
PO>        break;
PO>        fs.Write(buf, 0, buf.Length); // <-- Вот тут вы пишете в выходной стрим количество байт на размер буфера, а не не количество прочитанных, замените ее строчкой ниже
PO>       // fs.Write(buf, 0, byteRead); // это правильный вариант 
PO>    }            
PO>}
PO>
Re[2]: Проблема со скачкой файла с ФТП
От: pt4h Беларусь http://dzmitryhuba.blogspot.com/
Дата: 20.10.08 07:41
Оценка:
Здравствуйте, zhech, Вы писали:

Z>Скачай нормальный ftpclient. мелкомягких он немного глючит пропробуй www.enterprisedt.com


А можно подробнее как он глючит?
Re[3]: Проблема со скачкой файла с ФТП
От: zhech  
Дата: 20.10.08 07:46
Оценка:
У меня в проекте были проблемы при скачке с ftp — недокачивало файл, если он чуть отличается от какого-то размера, уже и не помню но то, что такое было — это точно, пришлось пользоваться сторонними FTPClientами
Re[2]: Проблема со скачкой файла с ФТП
От: PhiberOptik Украина  
Дата: 20.10.08 09:27
Оценка:
Здравствуйте, pt4h, Вы писали:

P>У вас ошибка в коде.

PO>> fs.Write(buf, 0, buf.Length); // <-- Вот тут вы пишете в выходной стрим количество байт на размер буфера, а не не количество прочитанных, замените ее строчкой ниже
PO>> // fs.Write(buf, 0, byteRead); // это правильный вариант

да тут моё упущение. по привычке со стрингом написал ленч к массиву (
теперь всё корректно заработало, примного благодарен за ответ.
Жизнь — дерьмо которое постоянно приходиться разгребать.
Re[3]: Проблема со скачкой файла с ФТП
От: pt4h Беларусь http://dzmitryhuba.blogspot.com/
Дата: 20.10.08 09:29
Оценка: :)
Здравствуйте, PhiberOptik, Вы писали:

PO>Здравствуйте, pt4h, Вы писали:


P>>У вас ошибка в коде.

PO>>> fs.Write(buf, 0, buf.Length); // <-- Вот тут вы пишете в выходной стрим количество байт на размер буфера, а не не количество прочитанных, замените ее строчкой ниже
PO>>> // fs.Write(buf, 0, byteRead); // это правильный вариант

PO>да тут моё упущение. по привычке со стрингом написал ленч к массиву (

PO>теперь всё корректно заработало, примного благодарен за ответ.
Тут есть чудные кнопки для спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.