Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];

Вниз

Как определить по редиректу реальное имя файла в сети   Найти похожие ветки 

 
DRtM   (2006-11-26 08:43) [0]

Как определить по редиректу реальное имя файла в сети
через WinInet функции. Делал так-

function GetFileName(hRequest: hInternet):String;
var
 lpdwReserved, lpdwBufferLength: DWord;
 lpvBuffer: array [1..MAX_PATH] of Char;
 PC: PChar;
begin
 Result:= "";
 
 lpdwReserved := 0;
 lpdwBufferLength := SizeOf(lpvBuffer);
//hRequest- указатель на hUrl полученный с помощью
//InternetOpenURL(hInet,PChar(HttpFileAddr)...
//HttpFileAddr - строка редиректа
 HttpQueryInfo(hRequest, HTTP_QUERY_LOCATION, @lpvBuffer,
 lpdwBufferLength, lpdwReserved);
 PC := PChar(@lpvBuffer);
 Result:= StrPas(PC);
end;

Получаю неизвестно, что. Как сделать правильно определение
реального имени файла в сети?


 
DRtM   (2006-11-30 04:42) [1]

Неужели ни кто не определял реальное имя файла в сети.


 
DRtM   (2006-11-30 10:36) [2]

?


 
Плохиш ©   (2006-11-30 11:08) [3]

У меня сервис отдаёт один из 2 миллионов файлов по запросу и обзывает его для клиента всегда одинаково. Так тебе какое имя надо?


 
Плохиш ©   (2006-11-30 11:10) [4]

Да, волшебное слово есть "Content-disposition"


 
DRtM   (2006-12-01 12:29) [5]

1. >Так тебе какое имя надо?
Объясняю-
вот например ссылка на книгу по
компонентам Indi, которая размещена на известном Вам сайте

http://podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Internet/IntroIndy/IndyInDepth.doc&file_id=IndyInDepth

так вот - это не прямая ссылка на файл IndyInDepth.doc, а так называемый
РЕДИРЕКТ, сервер по нему с помощью функции HttpQueryInfo с параметром
HTTP_QUERY_LOCATION должен вернуть прямую ссылку, т.е. заканчивающуюся реальным именем файла, в данном случае IndyInDepth.doc.
В моем примере в функцию HttpQueryInfo я передаю первым параметром
указатель на hRequest, полученный с помощью функции
InternetOpenURL(hInet,PChar(HttpFileAddr)...
где HttpFileAddr и есть тот самый РЕДИРЕКТ.

hRequest - получен верно, т.к. я скачал указанный выше файл своей программой, естественно не зная с каким именем должен быть закаченный
файл(указал просто IndyInDepth).
HttpQueryInfo - возвращает False, т.е. не работает.

2.Да, волшебное слово есть "Content-disposition" - объясните по подробнее.


 
Плохиш ©   (2006-12-01 13:18) [6]


> так вот - это не прямая ссылка на файл IndyInDepth.doc,
> а так называемый
> РЕДИРЕКТ

Чушь, это запуск на выполнение скрипта и передача этому скрипту параметров.

> сервер по нему с помощью функции HttpQueryInfo с параметром
> HTTP_QUERY_LOCATION должен вернуть прямую ссылку

Нифига, не должен. А вполне может вернуть набор байтов. Большинство сайтов так и поступают.

> 2.Да, волшебное слово есть "Content-disposition" - объясните
> по подробнее.

RFC 2183


 
Anatoly Podgoretsky ©   (2006-12-01 16:41) [7]

> DRtM  (01.12.2006 12:29:05)  [5]

> HTTP_QUERY_LOCATION должен вернуть прямую ссылку,

А вот шиш вам, ничего я вам не верну.
А если бы и вернул, то что с ней делать то, по прямой ссылке обратиться нельзя.
Все веб запросы возвращают только виртуальную ссылку, относительно root и то только в простейших случаях, а учитывая возможности динамического постороения страниц, то даже и файла быть не может. А если учесть хакерские расширения, которые использованы в Apache то вообще не о чем говорить. Вот  пример

http://podgoretsky.com/ftp/Docs/Internet/IntroIndy/IndyInDepth.doc&file_id=IndyInDepth

Скажем папки Docs может физически не быть, вместо нее будет выполняться какая то скрытая программа, и даже файла IndyInDepth.doс тоже может не быть, это всего лишь для того, что бы посетителя не пугать названием MyHack.Exe


 
Anatoly Podgoretsky ©   (2006-12-01 16:44) [8]

> Плохиш  (01.12.2006 13:18:06)  [6]

Я перед этим привел более скрытый вариант скрипта, крайний случай

http://podgoretsky.com/IndyInDepth.doc

Никакого IndyInDepth.doc в голове нет и в помине, да и файла тоже такого нет, но пользователь получит что то под названием IndyInDepth.doc

Так то!!!


 
Плохиш ©   (2006-12-01 17:38) [9]


> Anatoly Podgoretsky ©   (01.12.06 16:44) [8]

Вот пришёл АП и всё испортил. Может я в ентой ветки расслабляюсь :-) Тебе других веток мало, да? :-P


 
DRtM   (2006-12-02 03:44) [10]

Ладно пусть я не прав во всем, что написал выше, тогда поставлю
вопрос иначе. Как многие программы закачки определяют тот самый
реальный файл если по Вашему консолидированному мнению сервер
ни чего не должен вернуть. Я говорю не про функцию HttpQueryInfo, а вообще КАК? Ну к примеру загрузите в ссылку выше в какой нибудь известный менеджер закачек и он определит файл для закачки - в данном случае
http://podgoretsky.com/ftp/Docs/Internet/IntroIndy/IndyInDepth.doc.


 
Плохиш ©   (2006-12-02 12:26) [11]

[4] + RFC 2183


 
Anatoly Podgoretsky ©   (2006-12-02 15:22) [12]

> DRtM  (02.12.2006 3:44:10)  [10]

> Как многие программы закачки определяют тот самый
реальный файл если по Вашему консолидированному мнению сервер
ни чего не должен вернуть.

А они не определяют, а просто принимают.


 
DRtM   (2006-12-03 08:14) [13]

Вообщем не подсказки, а одни загадки
1.[4] + RFC 2183
Ну и что.  Поискал я по интернету информацию
ничего связного не нашел, только везде цитируется один пример с zip файлом при использовании CGI программы на Delphi и описание стандарта
передачи данных.
2.А они не определяют, а просто принимают.
Да пусть принимают. Я же спросил как определить. Функция WinInet не определяет, поэтому я и оратился за помощью в этот форум, а в ответ одни загадки!!!


 
Anatoly Podgoretsky ©   (2006-12-03 11:08) [14]

> DRtM  (03.12.2006 8:14:13)  [13]

Тебе сказали повеситься.


 
Плохиш ©   (2006-12-03 20:32) [15]


> DRtM   (03.12.06 08:14) [13]
> Вообщем не подсказки, а одни загадки
> 1.[4] + RFC 2183
> Ну и что.  Поискал я по интернету информацию

Смени интернет, в моём в первой же ссылки приводится полное описание.


 
ыкык   (2007-03-22 09:37) [16]

ответ к DRtM
=================================
мда...  у меня такая же проблема.
Народ, зачем вы тогда силите в форуме и косите под программистов


 
Плохиш ©   (2007-03-22 11:42) [17]

Кароче керлы не слухай здеся никого слахай сюды разводишь сервуху по панятиям на нужный файлуху и пока сервуха над ответкой тумкает куришь касяк покурил смотришь што там сервуха порешал если в отказ пошел опускай его если ответкаешь дери ответу и раздербанивай его башку тама ищи извилину с погонялом Content-disposition и бери всё шо в ней плохо лежит в ентой фигне ищеш кучку буквав в видухе filename апосля там ещё две какито палки положили нафига непонятки а посля палок ешо две недопалки стояти будут так хватай все буква после ентих недопалок и пока не увидиш ещё недопалки так енти буква и буди нужны тебе


 
VirEx ©   (2007-03-22 12:24) [18]

=== out ===
GET /cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Internet/IntroIndy/IndyInDepth.doc&file_id=IndyInDepth HTTP/1.1
User-Agent: Opera/9.00 (Windows NT 5.1; U; ru)
Host: podgoretsky.com
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru,ru_RU;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Connection: Keep-Alive

=== in ===
HTTP/1.1 302 Found
Date: Thu, 22 Mar 2007 09:24:11 GMT
Server: Apache/1.3.9 (Unix)
Location: http://podgoretsky.com/ftp/Docs/Internet/IntroIndy/IndyInDepth.doc
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

13d
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="http://podgoretsky.com/ftp/Docs/Internet/IntroIndy/IndyInDepth.doc">here</A>.<P>
<HR>
<ADDRESS>Apache/1.3.9 Server at podgoretsky.com Port 80</ADDRESS>
</BODY></HTML>

0



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

Форум: "Сети";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 2.146 c
2-1193928687
Farel
2007-11-01 17:51
2007.11.25
usb flash


2-1194034973
неугомонный
2007-11-02 23:22
2007.11.25
scrollbar stringgrid


2-1193740119
Zong_Zong
2007-10-30 13:28
2007.11.25
GDB как открыть?


2-1193990943
webpauk
2007-11-02 11:09
2007.11.25
Грамотно удалить компонет


2-1193835387
ChaoX
2007-10-31 15:56
2007.11.25
Параметры запроса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский