Форум: "Сети";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];
ВнизКак по 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c