Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Descargar un archivo de Internet (https://www.clubdelphi.com/foros/showthread.php?t=59048)

c0lo 11-08-2008 05:15:29

Descargar un archivo de Internet
 
Disculpen yo de nuevo con una pregunta que tengo o duda que tengo, empezando con WebBrowser, ahora tengo una web en la cual cuando descargo un archivo de dicha web me genera un ventana como esta:


ahora lo que yo quiero es automatizar ello, es decir, que internamente en mi form o codigo de delphi indicar la ruta donde guardara el archivo y ademas que lo guarde en dicha ruta.

o en mi project que estoy haciendo la descarga del archivo es de este modo:



Ahora es este mi problema en si, como hago que en mi mismo project como dije anteriormente la descarga sea atuomatica a una direccion dada???

Neftali [Germán.Estévez] 11-08-2008 08:46:58

¿Puedes poner el código que estás utilizando para descargar el fichero?

No se si estás utilizando las funciones de la unit URLMon; Si no es así deberías echarle un vistazo.

c0lo 11-08-2008 09:17:12

No se trata de un enlace directo para descargar, es similar al sistema de Planet-Source Code, el cual para descargar los ejemplos te genera un codigo aleatorio y debes tener cuenta para mantener continuo dicha descarga.

No se si me dejo explicar bien, es decir, es una pagina en la cual se debe introducir el codigo de seguridad para descargar, pero ello ya lo tengo resuelto el problema es cuando aparece la ventana de descarga la direccion del archivo a guardar en la PC or hd y ocultar dicha descarga.

JXJ 11-08-2008 19:24:27

con las indy y usando el componente

tidhttp

revisa la opcion de habilitar redireccionamiento.
y las que sean de http response.
por que en la respuesta es donde se obtiene la url definitiva done esta el archivo

me refiero a esto

url aleatoria

www.ziddu.com/donwloads/23221321dodias=?/

url del servidor.
www.ziddu.com/files/elarchivo.zip

c0lo 11-08-2008 22:50:31

No tendras algun ejemplo que me pueda servir?

felipe88 11-08-2008 23:15:17

...si no estoy fuera de foco...
 
:D

Depronto este codigo te sirva.

Código Delphi [-]
/*Añadiendo a nuestro formulario la librería WinINet se pueden descargar archivos por HTTP con la siguiente función:*/

function DescargarArchivo( sURL, sArchivoLocal: String ): boolean;
const BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  LongitudBuffer: DWORD;
  F: File;
  sMiPrograma: String;
begin
  sMiPrograma := ExtractFileName( Application.ExeName );
  hSession := InternetOpen( PChar( sMiPrograma ), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0 );

  try
    hURL := InternetOpenURL( hSession, PChar( sURL ), nil, 0, 0, 0 );

    try
      AssignFile( F, sArchivoLocal );
      Rewrite( F, 1 );

      repeat
        InternetReadFile( hURL, @Buffer, SizeOf( Buffer ), LongitudBuffer );
        BlockWrite( F, Buffer, LongitudBuffer );
      until LongitudBuffer = 0;

      CloseFile( F );
      Result := True;
    finally
      InternetCloseHandle( hURL );
    end
  finally
    InternetCloseHandle( hSession );
  end
end;

/*El primer parámetro es la URL completa del archivo a descargar y el
segundo la ruta y nombre del archivo donde se va a guardar en nuestro disco duro. 
Un ejemplo de llamada a la función sería:*/

DescargarArchivo( 'http:\\miweb.com\imagen.jpg', 'C:\Mis documentos\imagen.jpg' );

c0lo 12-08-2008 00:31:01

Yo toy usando algo similar:

Código:

function GetInetFile(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  BufferLen: DWORD;
  f: File;
  sAppName: string;
begin
Result:=False;
sAppName := ExtractFileName(Application.ExeName);
hSession := InternetOpen(PChar(sAppName),
                INTERNET_OPEN_TYPE_PRECONFIG,
              nil, nil, 0);
try
  hURL := InternetOpenURL(hSession,
            PChar(fileURL),
            nil,0,0,0);
  try
  AssignFile(f, FileName);
  Rewrite(f,1);
  repeat
    InternetReadFile(hURL, @Buffer,
                    SizeOf(Buffer), BufferLen);
    BlockWrite(f, Buffer, BufferLen)
  until BufferLen = 0;
  CloseFile(f);
  Result:=True;
  finally
  InternetCloseHandle(hURL)
  end
finally
  InternetCloseHandle(hSession)
end
end;

Gracias, pero ahora tengo otro inconveniente cuando me muestra el cuadro de dialogo como lo cierro sin cerrar el proceso, que lo genera...

dec 24-09-2008 20:42:00

Hola,

Pero, se supone que con el código que utilizas no debería aparecer ningún cuadro de diálogo,... ¿no es así? :rolleyes:

PD. No dupliques hilos, acabo de cerrar uno que abriste en relación con este: sigue en este, por lo tanto, añadiendo lo que creas oportuno.

csantos 25-09-2008 15:00:10

y con la opción de reanudar la descarga?
 
¿Alguien sabe como se puede descargar un fichero pero desde una posición dada del fichero?.
Es decir, de un fichero de 2048 Bytes, por ejemplo, en una primera pasada se han leido 1000 Bytes y en un segundo intento, comienza la descarga desde el byte 1001.
Algo similar a lo que hacen los gestores de descarga.

Gracias.

MAXIUM 25-09-2008 15:33:22

Lo que necesitas esta aquí www.lawebdejm.com (cuando se restaure la página...)
En todo caso, al final de esta otra página hay un mirror http://articulos.conclase.net

Aquí el ejemplo completo http://www.divshare.com/download/5449757-6f4

koihl 14-05-2016 04:44:25

Descargar un archivo de internet
 
hola que tal!. Yo tengo el mismo problema pero a diferencia de que sea un link directo como w w w . clubdelphi .com/images /clubdelphi. jpg la pagina donde quiero descargar esos archivos ejecuta un script por ejemplo:
javascript:ObtenerArchivo('1177995.0', '5.0', '2016.0','RespuestaImss','6438768.0');

que al parecer es una funcion dentro de la pagina web y el archivo se crea al momento de dar click en el enlace, para todo esto es requerido que inicie sesion; usuario y contraseña y vaya precisamente a esa pagina que contiene la funcion. Mi pregunta es si se puede interceptar el archivo creado y descargarlo sin que me aparesca el cuadro de dialogo guardar en, dandole indicaciones para guardarlo en mi HD.

si no se pudiera dar la indicacion de guardarlo en algun lugar especifico no importa ya seria cuestion de yo crear algun procedimiento para redireccionarlos.

ojala alguien tenga una respuesta para ello ya que he estado trabajando en el proyecto y esta es la parte final... estoy angustiado. :eek:

Muchas gracias por su atencion.


La franja horaria es GMT +2. Ahora son las 17:14:20.

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