Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2013, 16:30   #1
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
Вопрос Как определить название файла в интернете?

Собсно мне интересно, как менеджеры закачек определяют имя файла в интернете? Погуглив, единственный ответ что нашёл, это опрос сервера на наличие content-disposition и получение имени файла из него. Но соль в том, что не все серверы отдают content-disposition, тем не менее менеджеры закачки как-то узнают имя файла. Как?

Сервер на котором я тестировал, отдаёт только такую инфу:
Код:
Connection = keep-alive
Accept-Ranges = bytes
Content-Length = 38425
Content-Type = application/x-rar-compressed
Date = Sat, 06 Apr 2013 10:29:51 GMT
Last-Modified = Wed, 16 Jan 2013 19:28:07 GMT
Server = exhttpd/0.55X

Последний раз редактировалось Raf-9600; 06.04.2013 в 16:34.
Raf-9600 вне форума Ответить с цитированием
Старый 06.04.2013, 16:34   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

наверняка из ссылки.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.04.2013, 16:36   #3
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
наверняка из ссылки.
Ссылка имеет такой вид "http://www.ex.ua/get/43880931" (сервер доступен только Украинцам)
Проверял с помощью Free Download Manager - определяет имя файла файла без проблем. Значит способ должен быть.
Raf-9600 вне форума Ответить с цитированием
Старый 06.04.2013, 19:28   #4
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

просмотри сниферром как твой ДЛМ определяет имя файла.

Вот псе гениальное - просто, обычный редирект идет как ты видишь....
IvaniuS вне форума Ответить с цитированием
Старый 06.04.2013, 19:52   #5
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
По умолчанию

Ясно, значит нужно отловить на что ссылается редирект и у него про content-disposition спрашивать.
IvaniuS, благодарю за помощь.

P.S.
Вот даже частичный пример сразу нагуглил: http://forum.antichat.ru/showpost.ph...6&postcount=14
Raf-9600 вне форума Ответить с цитированием
Старый 06.04.2013, 23:14   #6
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Вот код который покажет ваш файл
Код:
var
  HTTP: TIdHTTP;
begin
  HTTP := TIdHTTP.Create(nil);
  try
   HTTP.HandleRedirects := true;
   HTTP.Get('http://www.ex.ua/get/43880931');
   Showmessage(HTTP.Request.URL); // примерно в таком виде /get/71225efb4176276126ef0d1e00fb78cc/43880931/1.04c.rar
   finally
    HTTP.Free;
  end;
end;
И с чего вы взяли что этот сервер только для украинцев, он вроде как для всех

Последний раз редактировалось Aliens_wolfs; 06.04.2013 в 23:17.
Aliens_wolfs вне форума Ответить с цитированием
Старый 07.04.2013, 00:00   #7
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
Радость

ну т.к. ему только имя нужно сразу бы писал рабочий код:
Код:
var
  HTTP: TIdHTTP;
begin
  HTTP := TIdHTTP.Create(nil);
  try
   HTTP.HandleRedirects := true;
   HTTP.Get('http://www.ex.ua/get/43880931');
   Showmessage(ExtractFileName(HTTP.Request.URL)); 
   finally
    HTTP.Free;
  end;
end;
IvaniuS вне форума Ответить с цитированием
Старый 07.04.2013, 00:08   #8
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
По умолчанию

Всех благодарю, я уже разобрался

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
И с чего вы взяли что этот сервер только для украинцев, он вроде как для всех
Мне так русские сказали
Возможно просто он только мелкие файлы всем отдаёт? Вот к примеру ссылка на файл 1.5 Гб - http://www.ex.ua/get/43817093

Последний раз редактировалось Raf-9600; 07.04.2013 в 00:10.
Raf-9600 вне форума Ответить с цитированием
Старый 07.04.2013, 00:59   #9
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

С одной функцией ExtractFileName недаст просто имя файла, для начало нужно символы / на \ заменить
Код:
var
  HTTP: TIdHTTP;
begin
  HTTP := TIdHTTP.Create(nil);
  try
   HTTP.HandleRedirects := true;
   HTTP.Get('http://www.ex.ua/get/43880931');
   Showmessage(ExtractFileName(StringReplace(HTTP.Request.URL, '/', '\', [rfReplaceAll]))); // вот теперь даст имя файла 1.04c.rar
   finally
    HTTP.Free;
  end;
Цитата:
Возможно просто он только мелкие файлы всем отдаёт? Вот к примеру ссылка на файл 1.5 Гб - http://www.ex.ua/get/43817093
Там возраст запрашивает, скорее всего, это видео эро содержания.
Хотя еще можно через украинский прокси попробовать.

Последний раз редактировалось Aliens_wolfs; 07.04.2013 в 01:23.
Aliens_wolfs вне форума Ответить с цитированием
Старый 07.04.2013, 01:10   #10
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
Там возраст запрашивает, скорее всего, это видео эро содержания.
Это ссылка на Diablo 2
Raf-9600 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как считать название процедур из файла и вызвать их в программе? StudeHt Помощь студентам 9 01.06.2011 21:53
сравнение размера файла в интернете с размером файла на компьютере Excellion Общие вопросы Delphi 19 09.01.2011 17:33
Cохранение выбранного элемента ComboBox как название файла kate158 Помощь студентам 5 01.08.2008 12:02
Как вытянуть название файла из линка jungo Microsoft Office Excel 6 16.07.2008 14:08
как определить название жёсткого диска??? PAVEL315 Общие вопросы Delphi 7 20.11.2006 20:27