Skip to content

Descargar archivos desde una URL con la Clase TDownLoadURL

La unidad ExtActns en Delphi, es una poderosa herramienta para facilitar la interacción de la Aplicación con el usuario, en acciones como copiar, pegar, abrir URL, descargar archivos entre otras.

Una de las clases más destacados de esta unidad es la TDownLoadURL, que permite descargar archivos desde una URL de manera sencilla.

Para utilizar la clase TDownLoadURL y poder descargar de archivos desde una URL, solo utilizaremos algunas pocas lineas de código pero aprovecharemos al máximo la funcionalidad que ofrece.

Ejemplo de como descargar archivos desde una URL:

Uses ExtActns;

procedure TFDownload.DonloadFile;
begin
  try
    with TDownLoadURL.Create(self) do
    begin
      try
        URL := 'http://url_desde_donde_descargar_el_archivo';
        FileName := 'Path donde se guardara el archivo descargado incluyendo el nombre el mismo';
        OnDownloadProgress := On_DownloadProgress;
        AfterDownload := On_AfterDownload;
        BeforeDownload := On_BeforeDownload;
        ExecuteTarget(nil);
      finally
        Free;
      end;
    end;
  except
    on E: Exception do
    begin
      ShowMessage('Error Download File: ' + E.Message);
    end;
  end;
end;

procedure TFDownload.On_BeforeDownload(Sender: TObject);
begin
  { Before Download }
end;

procedure TFDownload.On_AfterDownload(Sender: TObject);
begin
  { After Download }
end;

procedure TFDownload.On_DownloadProgress(Sender: TDownLoadURL; Progress, ProgressMax: Cardinal; StatusCode: TURLDownloadStatus; StatusText: String; var Cancel: Boolean);
begin
  { Download Progress }
end;

En primer lugar, agregamos el Uses ExtActns.

A continuación creamos la clase:

TDownLoadURL.Create(self)

Paso siguiente, es completar las siguientes propiedades de la Clase:

        URL := 'http://url_desde_donde_descargar_el_archivo';
        FileName := 'Path donde se guardara el archivo descargado incluyendo el nombre el mismo';

Donde, URL es la URL desde donde se va a descargar el archivo. Y FileName es el path donde se guardará el archivo incluyendo el nombre del archivo destino.

De forma opcional podemos declarar los siguientes eventos:

        OnDownloadProgress := On_DownloadProgress;
        AfterDownload := On_AfterDownload;
        BeforeDownload := On_BeforeDownload;

procedure TFDownload.On_BeforeDownload(Sender: TObject);
begin
  { Before Download }
end;

procedure TFDownload.On_AfterDownload(Sender: TObject);
begin
  { After Download }
end;

procedure TFDownload.On_DownloadProgress(Sender: TDownLoadURL; Progress, ProgressMax: Cardinal; StatusCode: TURLDownloadStatus; StatusText: String; var Cancel: Boolean);
begin
  { Download Progress }
end;

OnDownloadProgress se ejecuta cuando comienza la descarga y durante toda a descarga, en este evento podremos colocar el llenado de un ProgressBar por ejemplo, o informar al usuario la cantidad de Kb descargado o la velocidad de descarga.

AfterDownload se ejecuta una vez finalizada la descarga

BeforeDownload se ejecuta una vez antes de inicializar la descarga

En conclusión, en la unidad ExtActns, encontraremos herramientas muy valiosas para que nuestra aplicación pueda trabajar sobre internet, te apoyamos para que inspecciones la unidad y descubras las otras herramientas que nos proporciona.