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 13-06-2008
jamlaboira jamlaboira is offline
Registrado
 
Registrado: jun 2008
Posts: 7
Poder: 0
jamlaboira Va por buen camino
Descargar imagenes desde una URL

Hola, necesito descargar una serie de imagenes desde una URL determinada.
Este proceso lo tengo que hacer de forma automatizada, es decir, el programa debe descargar unas 250 imágenes cada semana y asignarles un nombre de fichero en el equipo local que se han descargado.

Ejemplo: La imagen está en http://www.dominio.com/imagen1.jpg
y necesito bajarla a mi equipo con el nombre catalogo_imagen1.jpg
(Así unas 250 veces de forma automática.)

He pensado utilizar el componente TWebBrowser, pero no he trabajado nunca con él...¿Alguien me puede ayudar con esto?

Un saludo a toda/os y Gracias de antemano...!!
Responder Con Cita
  #2  
Antiguo 13-06-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,

¿Tienes los componentes Indy instalados? Probablemente sí, y entonces podrías usar el componente "TIdHttp". En este hilo se muestra cómo. Existe algunos otros componentes de terceros, pero, incluso podrías usar la librería WinInet, que se incluye con Windows. En este otro hilo, probablemente, encuentres información acerca de varias de estas posibilidades que se te ofrecen.

PD. Bienvenido al ClubDelphi.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 13-06-2008
jamlaboira jamlaboira is offline
Registrado
 
Registrado: jun 2008
Posts: 7
Poder: 0
jamlaboira Va por buen camino
Gracias dec, no he trabajado con Indy, pero veo en el hilo que me has facilitado que no tiene gran dificultad...Creo que es justo lo que ando buscando.

Muchas gracias de nuevo por tu rápida respuesta.
Responder Con Cita
  #4  
Antiguo 13-06-2008
jamlaboira jamlaboira is offline
Registrado
 
Registrado: jun 2008
Posts: 7
Poder: 0
jamlaboira Va por buen camino
Hola de nuevo dec, he revisado el código de Indy, pero al ejecutarlo me da un error en la siguiente línea:

IdHTTP.Get( URL+'/'+FICHERO, Stream );

Get: Undeclared identifier

¿Una ayudita, por favor....?

Gracias de nuevo
Responder Con Cita
  #5  
Antiguo 15-06-2008
jamlaboira jamlaboira is offline
Registrado
 
Registrado: jun 2008
Posts: 7
Poder: 0
jamlaboira Va por buen camino
Me faltaba un simple Form1. delante (ya que el control está en Form1...)

De todas formas, me he dado cuenta de que el fichero origen está en formato indirecto a traves de un extractor de imágenes cgi y no me funciona, pongo un ejemplo real a ver si alguien tiene una idea feliz, a mi no se me ocurre nada de nada...

Código Delphi [-]
 procedure PedirImagen( URL, FICHERO, DIR_DESTINO:string );
  var
    Stream      : TFileStream;
  begin
  { re-crear el DIRECTORIO de destino por si no estuviese }
    ForceDirectories( DIR_DESTINO );
    Stream  := TFileStream.Create( DIR_DESTINO + '\' + FICHERO, fmCreate);
    try
      Form1.idHttp.Get ( URL + '/' + FICHERO, Stream );
    finally
      Stream.Free;
    end;
  end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  PedirImagen( 'http://www.infortisa.com/spa/item/extractimg.cgi?action=large&code=420038', '420038.jpg', 'c:\pruebas\imagenes' );
end;

Gracias por anticipado...!!

Última edición por dec fecha: 16-06-2008 a las 13:05:57.
Responder Con Cita
  #6  
Antiguo 16-06-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,

A bote pronto se me ocurre algo como lo siguiente, basado en código fuente del maestro Seoane.

Código Delphi [-]
uses
  SysUtils, Dialogs, WinInet;

function DownloadToStream(Url: string; Stream: TStream): Boolean;
var
  hNet: HINTERNET;
  hUrl: HINTERNET;
  Buffer: PChar;
  BytesRead: DWORD;
begin
  Result := FALSE;
  hNet := InternetOpen('agent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if (hNet <> nil) then
  begin
    hUrl := InternetOpenUrl(hNet, PChar(Url), nil, 0,
      INTERNET_FLAG_RELOAD, 0);
    if (hUrl <> nil) then
    begin
      GetMem(Buffer,100*1024);
      try
        while (InternetReadFile(hUrl, Buffer, 100*1024, BytesRead)) do
        begin
          if (BytesRead = 0) then
          begin
            Result := TRUE;
            break;
          end;
          Stream.WriteBuffer(Buffer^,BytesRead);
        end;
      finally
        FreeMem(Buffer);
      end;
      InternetCloseHandle(hUrl);
    end;
    InternetCloseHandle(hNet);
  end;
end;

function DownloadImage(actionParam, codeParam, outputDir: string): boolean;
const
  IMG_EXT = '.jpg';
  BASE_URL = 'http://www.infortisa.com/spa/item/extractimg.cgi?action=%s&code=%s';
var
  fStream: TFileStream;
  imgUrl, imgPath: string;
begin
  imgUrl := Format(BASE_URL, [actionParam, codeParam]);
  imgPath := ExtractFilePath(outputDir) + codeParam + IMG_EXT;
  fStream := TFileStream.Create(imgPath, fmCreate);
  try
    result := DownloadToStream(imgUrl, fStream);
  finally
    fStream.Free();
  end;
end;

(* Ejemplo de uso
*)
procedure TForm1.Button1Click(Sender: TObject);
begin
  if DownloadImage('large', '420031', 'C:\') then
    ShowMessage('Imagen descargada')
  else
    ShowMessage('No pudo descargarse la imagen');
end;
__________________
David Esperalta
www.decsoftutils.com
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
Desde dónde puedo descargar la Jedi Library Gbyte Gráficos 13 28-04-2015 07:11:33
Descargar fichero 25 Mb desde internet fmatias Internet 4 06-07-2007 17:43:59
descargar archivo desde php gulder PHP 2 07-06-2007 08:28:26
Descargar imágenes de internet via http. alfredosg19 Internet 2 08-04-2005 13:02:27
Descargar y ejecutar aplicacion desde el navegador coulthard Linux 0 23-12-2004 18:40:08


La franja horaria es GMT +2. Ahora son las 20:05:06.


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