Как узнать размер файла в нете?
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.123] |
|
|
Соблюдайте общие правила форума
MSDN Library
FAQ раздела
Поиск по разделу
Как правильно задавать вопросы
Как узнать размер файла в нете?
|
|
|
|
|
Как узнать размер файла в нете?
|
|
Сообщ.
#2
,
|
|
|
|
HttpQueryInfo
---- Может в фак загоним это, или там уже есть ? |
|
Сообщ.
#3
,
|
|
|
|
Не фига в факе нету!
|
|
Сообщ.
#4
,
|
|
|
|
![]() ![]() uses wininet; ... function GetUrlSize(const URL:string):integer;//результат в байтах var hSession,hFile:hInternet; dwBuffer:array[1..20] of char; dwBufferLen,dwIndex:DWORD; begin Result:=0; hSession:=InternetOpen('GetUrlSize',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0); if Assigned(hSession) then begin hFile:=InternetOpenURL(hSession,PChar(URL),nil,0,INTERNET_FLAG_RELOAD,0); dwIndex:=0; dwBufferLen:=20; if HttpQueryInfo(hFile,HTTP_QUERY_CONTENT_LENGTH,@dwBuffer,dwBufferLen,dwIndex) then Result:=StrToInt(StrPas(@dwBuffer)); if Assigned(hFile) then InternetCloseHandle(hFile); InternetCloseHandle(hsession); end; end; |
|
Сообщ.
#5
,
|
|
|
|
Спасибо!!!!!!!!!!!
|
|
Сообщ.
#6
,
|
|
|
|
Только имей ввиду, что ты получишь размер файла ТОЛЬКО В ТОМ СЛУЧАЕ, ЕСЛИ СЕРВЕР УМЕЕТ ЭТО СООБЩАТЬ.
Многие бесплатные хосты сообщают длину файла как ноль (хотя реально файл есть). |
|
Сообщ.
#7
,
|
|
|
|
А как узнать имя файла из URL, если ссылка непрямая???
Через WinInet есс-но. |
|
Сообщ.
#9
,
|
|
|
|
Что по поводу моего вопроса? Весь форум пеперыл по фразе WinInet, решения не нашел! И у десятка кодеров в аське спросил, никто не может ничего подсказать.
|
|
Сообщ.
#10
,
|
|
|
|
GET/POST ?
|
|
Сообщ.
#11
,
|
|
|
|
Цитата Mr. Gonarh @ GET/POST ? Вот тут подобный вопрос задавали. Цитата Привет всем. Столкнулся с проблемой. Как определить размер файла, примеров в сети уйма, а вот как определить имя файла ни одного даже намёка не нашел Ну, с прямыми ссылками типа http://host.net/download/file.zip всё понятно, но если ссылка типа http://host.net/go.php?act=download&file=76534 то как быть в этой ситуации? Заранее биг фенькс. Добавлено как это сделать? Добавлено Пробовал через эту функцию: ![]() ![]() function GetUrlInfo(const dwInfoLevel: DWORD; const FileURL: string): string; var hSession, hFile: hInternet; dwBuffer: Cardinal; dwBufferLen, dwIndex: DWORD; begin Result := ''; hSession := InternetOpen('Explorer', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if Assigned(hSession) then begin hFile := InternetOpenURL(hSession, PChar(FileURL), nil, 0, INTERNET_FLAG_RELOAD, 0); dwIndex := 0; dwBufferLen := 1000; if HttpQueryInfo(hFile, dwInfoLevel, @dwBuffer, dwBufferLen, dwIndex) then Result :=PChar( @dwBuffer); if Assigned(hFile) then InternetCloseHandle(hFile); InternetCloseHandle(hsession); end; end; Но возвращает пустой результат. Вызов: GetUrlInfo(HTTP_QUERY_LOCATION, url); |
|
Сообщ.
#12
,
|
|
|
|
дык говорю же формируешь запрос, читаеш заголовок и в поле Content-Location будет тебе то что нужно
|
|
Сообщ.
#13
,
|
|
|
|
Mr. Gonarh
Может тогда уже HEAD-запрос? |
|
Сообщ.
#14
,
|
|
|
|
Цитата Mr. Gonarh @ дык говорю же формируешь запрос, читаеш заголовок и в поле Content-Location будет тебе то что нужно Можно поподробнее? Желательно пример отправки запроса. Только WinInet, не WinSock. Добавлено либо получение хеадера через HTTP_QUERY_RAW_HEADERS |
|
Сообщ.
#15
,
|
|
|
|
Цитата Sec†orX @ Цитата Mr. Gonarh @ дык говорю же формируешь запрос, читаеш заголовок и в поле Content-Location будет тебе то что нужно Можно поподробнее? Желательно пример отправки запроса. Только WinInet, не WinSock. к сожалению работал только с Winsock API |
|
Сообщ.
#16
,
|
|
|
|
Цитата Mr. Gonarh @ к сожалению работал только с Winsock API Жаль. ![]() Кто подскажет как реализовать через WinInet??? |
|
Сообщ.
#17
,
|
|
|
|
а idHTTP не подойдет?
|
|
Сообщ.
#18
,
|
|
|
|
Цитата Mr. Gonarh @ а idHTTP не подойдет? Не, от Indy давно уже отказался. Нашел вчера решение здесь |