Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.17;
Скачать: CL | DM;

Вниз

TKOLHTTP и TKOLFTP - скачка определенной части файла   Найти похожие ветки 

 
Vitalis ©   (2002-07-01 23:00) [0]

НАрод, нужна функция для FTP и HTTP, которая бы забирала определенную часть определенного удаленного файла и записывала его в поток. Я взял в роли прототипа функцию Get и вот что получилось:
procedure TKOLFtpClient.GetToStream(RemFile : String;{Удаленный файл} Where : PStream;{Поток, куда скачивать}Start,{Смещение с начала файла} Length{Длина скачки} : Integer);
begin
if RemFile = "" then exit;
if ftpStatus = ftpReady then begin
Size(RemFile);
ftpStatus := ftpGet;
OutStream := Where;
if fMainSock.Connected then begin
OpenData;
fDataSock.OnRead := OnDSBRead;
if SendStr("TYPE I") then begin
TotalRece := Start;
OutStream.Position := Start;
if SendStr("REST " + int2str(Start)) then begin
end;
SendStr("RETR " + RemFile);
end;
end else DoEvent(fOnFTPErr)
end else DoEvent(fOnFTPErr);
end;


Я не понял, как ограничивать скачку параметром Length.

Необходима аналогичная функция для TKOLHTTP, но там я вообще ничего не понял. Помогите люди добрые на мыло vox@smtp.ru


 
HekTo   (2002-07-01 23:26) [1]

Для ФТП, кажется, тебе придется это самому организовать - прервать прием, когда скачается требуемое количество байт информации. А для HTTP в заголовках есть такой:
Range: bytes=FromXXX-ToXXX, где FromXXX и ToXXX соответственно смещение начала и смещение конца запрашиваемого фрагмента.

А еще можно залезть на www.rfc.net и посмотреть спецификации протоколов FTP (RFC959) и HTTP/1.1 (RFC2068)...


 
HekTo   (2002-07-01 23:26) [2]

Для ФТП, кажется, тебе придется это самому организовать - прервать прием, когда скачается требуемое количество байт информации. А для HTTP в заголовках есть такой:
content-Range: bytes=FromXXX-ToXXX, где FromXXX и ToXXX соответственно смещение начала и смещение конца запрашиваемого фрагмента.

А еще можно залезть на www.rfc.net и посмотреть спецификации протоколов FTP (RFC959) и HTTP/1.1 (RFC2068)...


 
Vitalis ©   (2002-07-02 00:15) [3]

Спасибо. А для FTP где прерывать? в какой процедуре? в OnDSBRead?
Еще я не очень понял, зачем нужна TotalRece и функция Size()


 
Vitalis ©   (2002-07-02 01:13) [4]

И про TKOLHTTP - там заголовок Range: посылать в OnConn? после fSoc.SendString("Host: " + fAdr + #13#10); ?


 
BorisMor   (2002-07-02 16:29) [5]

Посмотри на странице Кладова
http://bonanzas.rinet.ru/rindex.htm
В разделе "Демо". Там есть примеры.



Страницы: 1 вся ветка

Текущий архив: 2003.04.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
3-54485
jen_bond
2003-03-29 17:12
2003.04.17
Проверка транзакции


1-54600
Delph1
2003-04-07 16:36
2003.04.17
Как из TMemoryStream в TImage поместить файл JPG?


1-54639
tovSuhov
2003-04-08 11:40
2003.04.17
Перехват сворачивания окна


14-54791
Дмитрий Баранов
2003-03-31 13:16
2003.04.17
Консольный вывод


1-54584
Beglec
2003-04-07 08:54
2003.04.17
Народ объясните пожалуйста, Что есть такое