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

Вниз

Как по http узнать размер файла??   Найти похожие ветки 

 
BorH ©   (2003-08-17 04:16) [0]

(продолжение темы " Скачивание файла по HTTP")
Тэкс, прогу я сделал, на ней два ПрогрессБара, один показывает общий прогресс, а второй не пашет, потому как я незнаю как определять размер файла. Желательно с помощью WinInet.


 
BorH ©   (2003-08-17 04:24) [1]

Я полагаю, надыть спросить сервака о размере...
Вот лог ФлешГета:

Sun Aug 17 02:59:45 2003


 
Palladin ©   (2003-08-18 00:44) [2]

Вряд ли твоя задача требует идеи.
RTFM
а конкретно
http://helper10.narod.ru/ac0.htm
RFC HTTP
смотри метод HEAD...
+ использование TClientSocket


 
Palladin ©   (2003-08-18 00:53) [3]

Учти только, сервер не обязан тебе возвращать размер ресурса...


 
Дмитрий В. Белькевич ©   (2003-08-18 01:49) [4]

InternetQueryDataAvailable takes the HINTERNET handle created by InternetOpenUrl, FtpOpenFile, GopherOpenFile, or HttpOpenRequest (after HttpSendRequest has been called on the handle) and returns the number of bytes available. The application should allocate a buffer equal to the number of bytes available +1 for the NULL terminator, and use that buffer with InternetReadFile. This method does not always work because InternetQueryDataAvailable is checking the file size listed in the header and not the actual file. The information in the header file could be outdated or the header file could be missing, since it is not currently required under all standards.

По-моему в описанке WinInet достаточно ясно написано.


 
gedd ©   (2003-08-18 11:57) [5]

А ты как через прокси проходить будешь?


 
BorH ©   (2003-08-18 12:24) [6]

2 gedd ©
hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

hURL := InternetOpenURL(hSession,PChar(fileURL),nil,0,0,0);


Насколько я разобрался, INTERNET_OPEN_TYPE_PRECONFIG указывает брать прокси из реестра.

Полазь по исходникам WinInet. Будет больше ясно.

2 Дмитрий В. Белькевич ©Спасибо конечно, но где ты достал инфу но WinInet? В справке Делфей нет...


 
BorH ©   (2003-08-19 00:30) [7]

2 Дмитрий В. Белькевич © Ясно. Понял. :-))
2 All Всё хорошо, но вот только InternetQueryDataAvailable не пашет, вернее пашет, но возвращает вместо размера то 655 то 656... Вот код, который я использую:


var
hSession, hURL: HInternet;

dwFlags, dwContext: DWORD;
begin

hSession := InternetOpen("Mozilla/4.0",
INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

//не думаю, чтоб ошибка была из-за непонравившегося серваку агента

hURL := InternetOpenURL(hSession,PChar(fileURL),nil,0,0,0);

InternetQueryDataAvailable(hURL,dwordFileSize, {!!!!}
0,0); {!!!!}



а потом в цикле чтение
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen)
и запись в файл...

Обидно, всё пашет, а это - нет!!!

Люди, ПЛИЗ ПОМОГИТЕ!!! время поджимает :-((


 
Дмитрий В. Белькевич ©   (2003-08-19 01:32) [8]

Для BorH: ищи доки на сайте господина Анатолия Подгородецкого http://www.podgoretsky.com. Там по wininet есть замечательная документация.



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
1-51298
MegaVolt
2003-10-01 13:34
2003.10.16
Ошибка в FAQ и HELP


1-51178
Андрей Б.
2003-10-05 02:34
2003.10.16
Вопрос по Битмапам...


1-51280
Максим
2003-10-07 09:44
2003.10.16
Остановка процедуры !!!


3-51060
Smashich
2003-09-26 17:35
2003.10.16
Grant


3-51110
Ru
2003-09-24 11:07
2003.10.16
How get data from BLOB Fields?