Главная страница
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.023 c
3-54491
Андрей Королёв
2003-03-30 16:34
2003.04.17
Не получается выполнить обработку Исключительной ситуации


1-54581
Last
2003-04-07 08:10
2003.04.17
Дополнение строки пробелами


7-54902
Михайлов Антон
2003-02-22 19:06
2003.04.17
Mouse.sens:=x;


1-54608
George2003
2003-04-07 16:30
2003.04.17
ord(X)


1-54589
asafr
2003-04-04 16:35
2003.04.17
DLL and private/public (Вопрос большой)