Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить имя скачиваемого файла? 
:(
    Опции темы
x_byte
Дата 11.3.2006, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 27.1.2004

Репутация: 1
Всего: 1



Что-то я не пойму... как получить имя файла перед закачкой из урла вида: _http://soft.mail.ru/Download.php?ver=21091 к примеру...
т.е. нужно видимо перехватить редирект (url) на сам файл, но как это сделать, я не могу разобраться!
Желательно с использованием WinInet...

Это сообщение отредактировал(а) x_byte - 11.3.2006, 21:26
PM MAIL   Вверх
FRAGNATIC
Дата 11.3.2006, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



новерное дождатся ответа скрипта что по адресу _http://soft.mail.ru/Download.php?ver=21091
потому что зачастую работа его выглядит так
Код

function download()
{
    global $prefix,$dbi,$pagetitle;
    $res = sql_query('SELECT file_url FROM '.$prefix.'_mp3 WHERE id="'.intval($_GET['id']).'"', $dbi);
    if (mysql_num_rows($res))
    {
        $file = mysql_result($res,0,0);
        sql_query('UPDATE '.$prefix.'_mp3 SET dl_count=dl_count+1 WHERE id="'.intval($_GET['id']).'"', $dbi);

        header('Location: '.$file);
    }
}

header('Location: '.$file);
вот что тебя перекидывает =)
PM MAIL   Вверх
x_byte
Дата 11.3.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 27.1.2004

Репутация: 1
Всего: 1



я это и имею ввиду... header('Location: ... меня редиректит на определённый урл (файла), так вот не понятно как получить этот самый урл...

пробовал вытащить из заголовков, не вышло:
Код

procedure TForm1.Button2Click(Sender: TObject);
const
  DataBufLen = 1024;
var
  buffer, Header, FileUrl: String;
  hInet, hURL: HINTERNET;
  size, index: DWORD;

  bHeaderRead: Boolean;
  HeaderBuf: Array [0..DataBufLen-1] of char;
  dwHeaderBufLength: DWord;
  dwHeaderReserved: DWord;
  aHeader: String;
begin
  hInet:=InternetOpen(nil,
    INTERNET_OPEN_TYPE_PRECONFIG,
    nil,
    nil,
    0);

  Header:='Accept: */*';
  FileUrl:='http://soft.mail.ru/Download.php?ver=21091';
  hURL:=InternetOpenURL(hInet,
    PChar(FileUrl),
    pchar(Header),
    StrLen(pchar(Header)),
    INTERNET_FLAG_RELOAD,
    0);
    dwHeaderReserved:=0;
    dwHeaderBufLength:=SizeOf(HeaderBuf);
    repeat
      bHeaderRead:=HttpQueryInfo(hURL, HTTP_QUERY_RAW_HEADERS_CRLF, @HeaderBuf, dwHeaderBufLength, dwHeaderReserved);
      aHeader:=aHeader+HeaderBuf;
    until (bHeaderRead = false) or (dwHeaderReserved = 0);
    Memo1.Text:=aHeader;
    InternetCloseHandle(hInet);
    InternetCloseHandle(hURL);
end;

Выдаёт:
HTTP/1.1 200 OK
Date: Sat, 11 Mar 2006 19:16:58 GMT
Server: Apache/1.3.33 (Unix)
Cache-Control: max-age=3600
Expires: Sat, 11 Mar 2006 20:16:58 GMT
Last-Modified: Wed, 01 Mar 2006 06:41:09 GMT
ETag: "c2984d-a7b14b-44054205"
Accept-Ranges: bytes
Content-Length: 10989899
Content-Type: application/octet-stream
Connection: Keep-Alive

Это сообщение отредактировал(а) x_byte - 11.3.2006, 22:19
PM MAIL   Вверх
x_byte
Дата 11.3.2006, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 27.1.2004

Репутация: 1
Всего: 1



Всё... разобрался!
Надо было просто добавить параметрам InternetOpenUrl - INTERNET_FLAG_NO_AUTO_REDIRECT
Код

procedure TForm1.Button2Click(Sender: TObject);
const
  DataBufLen = 1024;
var
  buffer, Header, FileUrl: String;
  hInet, hURL: HINTERNET;
  size, index: DWORD;

  bHeaderRead: Boolean;
  HeaderBuf: Array [0..DataBufLen-1] of char;
  dwHeaderBufLength: DWord;
  dwHeaderReserved: DWord;
  aHeader: String;
begin
  hInet:=InternetOpen(nil,
    INTERNET_OPEN_TYPE_PRECONFIG,
    nil,
    nil,
    0);

  Header:='Accept: */*';
  FileUrl:='http://soft.mail.ru/Download.php?ver=21091';
  hURL:=InternetOpenURL(hInet,
    PChar(FileUrl),
    pchar(Header),
    StrLen(pchar(Header)),
    INTERNET_FLAG_RELOAD or INTERNET_FLAG_NO_AUTO_REDIRECT, //ТУТ
    0);
    dwHeaderReserved:=0;
    dwHeaderBufLength:=SizeOf(HeaderBuf);
    repeat
      bHeaderRead:=HttpQueryInfo(hURL, HTTP_QUERY_RAW_HEADERS_CRLF, @HeaderBuf, dwHeaderBufLength, dwHeaderReserved);
      aHeader:=aHeader+HeaderBuf;
    until (bHeaderRead = false) or (dwHeaderReserved = 0);
    Memo1.Text:=aHeader;
    InternetCloseHandle(hInet);
    InternetCloseHandle(hURL);
end;

HTTP/1.1 302 Moved Temporarily
Server: Apache/1.3.27 (Unix) DAV/1.0.3 mod_jk/1.2.4 mod_ruby/1.0.7 Ruby/1.6.8 mod_mrim/0.17
Date: Sat, 11 Mar 2006 19:38:45 GMT
Content-Type: text/html
Location: _http://www.semonitor.ru/semonitor-rus.exe
P3P: policyref="/w3c/p3p.xml", CP="UNI"
x-powered-by: PHP/4.3.10
Set-Cookie: _TEST_=1; path=/; domain=.mail.ru
set-cookie: _TEST_=1; path=/; domain=.allsoft.ru
set-cookie: _TEST_=1; path=/; domain=.allsoft.kz
set-cookie: _TEST_=1; path=/; domain=.allsoft.by
set-cookie: _TEST_=1; path=/; domain=.allsoft.uz
set-cookie: _TEST_=1; path=/; domain=.allsoft.com.ua
Connection: Close

Это сообщение отредактировал(а) x_byte - 11.3.2006, 22:44
PM MAIL   Вверх
FRAGNATIC
Дата 12.3.2006, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



x_byte,
Молодец.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0654 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.