Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-02-2008
sagitarius sagitarius is offline
Registrado
 
Registrado: ene 2007
Posts: 4
Poder: 0
sagitarius Va por buen camino
Descargar un fichero

Buenas.

Les cuento, tengo varios enlaces del tipo

http://www.peliculasyonkis.com/descargar.php?id=934

y rapidamente se lanza una ventana para descargar el fichero, quisiera saber si es posible interactuar con esa ventana desde delphi (para obtener el nombre del fichero y el servidor).

Es decir al presionar sobre el enlace aparace la tipica ventana para descargar el fichero y deseo obtener el nombre y servidor del fichero para poderlo descargar desde mi aplicacion delphi.

Gracias
Responder Con Cita
  #2  
Antiguo 12-02-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Se me ocurre que para descargar el archivo no necesitas sino seguir el enlace, es decir, no me queda muy claro si sabes cómo descargar un archivo usando Delphi, puesto que el enlace que has puesto redirige a dicho archivo, y, por tanto, no deberías tener problemas en descargarlo.

A lo dicho se suma que el nombre del archivo es del tipo "2983202.divx", así que conocerlo no sé yo si te servirá de mucho o qué. Y, por otro lado, está el hecho de que puedes descargar el archivo y guardarlo con el nombre que tú quieras. Pero, ya digo, no sé si van por aquí los tiros o no.

En todo caso me he entretenido un rato y he preparado una función (no muy buena, seguramente) de modo que puedes obtener las cabeceras HTTP partiendo de una determinada URL, de tal modo que, mejor o peor (no estoy muy contento con el resultado, la verdad) puedes conseguir exactamente los datos que dices, al menos en este caso.

Ahí va la función:

Código Delphi [-]
uses
  WinInet;

function GetHttpHeaders(url: string): string;
var
  agent: string;
  flags: cardinal;
  len, dummy: dword;
  hInet, hUrl: hInternet;
  headers: array [0..MAX_PATH] of char;
begin
  dummy := 0;
  len := sizeof(headers);
  agent := 'Mozilla/3.0 (compatible; )';
  flags := INTERNET_OPEN_TYPE_PRECONFIG;
  hInet := InternetOpen(PChar(agent), flags, nil, nil, 0);
  if (hInet <> nil) then begin
    flags := INTERNET_FLAG_RELOAD;
    hUrl := InternetOpenUrl(hInet, PChar(url), nil, 0, flags, 0);
    if (hUrl <> nil) then begin
      flags := HTTP_QUERY_RAW_HEADERS_CRLF or
               HTTP_QUERY_FLAG_REQUEST_HEADERS;
      if not HttpQueryInfo(hUrl, flags, @headers, len, dummy) then
      begin
        result := EmptyStr
      end else begin
        result := headers;
      end;
      InternetCloseHandle(hUrl);
    end;
    InternetCloseHandle(hInet);
  end else begin
    result := EmptyStr;
  end;
end;

Lo que te retorna es una cadena de caracteres que contiene varios "campos" separados por "retornos de carro". Como podrás comprobar, entre esos campos (que corresponden a cabeceras HTTP) están el "host" y el nombre del archivo en cuestión. Espero que te sea de alguna ayuda.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 13-02-2008
sagitarius sagitarius is offline
Registrado
 
Registrado: ene 2007
Posts: 4
Poder: 0
sagitarius Va por buen camino
Gracias dec.

Googleando he localizado otro codigo mediante componentes indy mas concretamente con el componente TIdHttp.


Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
  IdHTTP1.HandleRedirects:=true;
  IdHTTP1.Head(ComBobox1.Items.Strings[Combobox1.itemIndex]);
  ListBox1.Items.Assign(idhttp1.Response.RawHeaders);
  if IdHTTP1.ResponseCode=404 then
    ListBox1.Items.Add('A File nem letezik')
    else
    begin
     if IdHTTP1.ResponseCode=200 then
     ListBox1.Items.Add('A File letezik')
      else
      ListBox1.Items.Add('Hiba');
      ListBox1.Items.Add('*************************************');
      ListBox1.Items.Add('Visszateresi kod szoveges :'+IdHTTP1.ResponseText);
      ListBox1.Items.Add('Visszateresi kod ertek :'+inttostr(IdHTTP1.Responsecode));
      ListBox1.Items.Add('host:'+IdHTTP1.Request.Host+'   Filenev :'+IdHTTP1.Request.URL);
       if idhttp1.Response.RawHeaders.IndexOfName('Last-Modified') > -1 then
      ListBox1.Items.Add('Utolso modositas datum :'+idhttp1.Response.RawHeaders.Values['Last-Modified'])
       else
      ListBox1.Items.Add('Nincs info az utolso modositasrol');
       if idhttp1.Response.RawHeaders.IndexOfName('Date') > -1 then
      ListBox1.Items.Add('File datum :'+idhttp1.Response.RawHeaders.Values['Date'])
      else
       ListBox1.Items.Add('Nincs info a file datumarol');
        if idhttp1.Response.RawHeaders.IndexOfName('Content-length') > -1 then
      ListBox1.Items.Add('File meret byte :'+idhttp1.Response.RawHeaders.Values['Content-length'])
      else
       ListBox1.Items.Add('Nincs info a file mereterol');
   end;
end;

Última edición por sagitarius fecha: 13-02-2008 a las 03:37:42.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Descargar fichero 25 Mb desde internet fmatias Internet 4 06-07-2007 17:43:59
Descargar tabla a fichero plano isg SQL 1 27-10-2006 21:47:57
Obtener un fichero adjunto a un nodo de un fichero XML muntasil Internet 0 18-07-2006 12:57:57
Descargar Formulario monicasierrar OOP 8 29-09-2005 18:25:25
Descargar DBE brandolin Conexión con bases de datos 4 15-05-2004 03:07:21


La franja horaria es GMT +2. Ahora son las 16:44:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi