Главная страница
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.017 c
3-54408
Silver_
2003-03-27 10:20
2003.04.17
ADODataSetBeforeDelete


1-54686
Славик
2003-04-04 17:30
2003.04.17
Руссификатор helpa


1-54741
Ruslan.
2003-04-02 19:18
2003.04.17
Office & Delphi


4-54942
NewEdik
2003-02-17 21:53
2003.04.17
Отступ в ComboBox


3-54472
Sergei
2003-03-29 12:59
2003.04.17
SQL Создание запроса Подскажите Пожалуйста