Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-01-2016
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
Obtener la información de un fichero sin llegar a descargarlo

Hola,

El tema es que tengo una serie de ficheros que se van descargando de distintos servidores webs y almacenando en nuestro servidor en local, estos ficheros cuando se modifican en la web, debo de actualizarlos también en local. Para determinar cuando se han modificado en el servidor utilizo la siguiente función:

Código Delphi [-]
function  TMainForm.GetURLFileInfo(const AURL:String; var FileSize:Int64; var FileHash:String):Boolean;
begin
  result:=false;
  with TIdURI, IdHTTP1 do
  try
    try
      Head(URLEncode(URLDecode(AURL)));
      result:=(ResponseCode=200);
    except
      on E: EIdHTTPProtocolException do
        logs.Error(E, 'GetURLFileInfo('+AURL+')');
    end;
  finally
    if result then begin
      //devuelve el tamaño del fichero en el servidor WEB
      FileSize:=Response.ContentLength;
      //devuelve un hash (especie de MD5) del fichero en el servidor WEB
      FileHash:=Response.ETAG;
    end else begin
      FileSize:=0;
      FileHash:='';
    end;
  end;
end;

En teoría (depende de los servidores y de su configuración) devuelve cierta meta-información de los ficheros tal como el tamaño del fichero en bytes y una especie de HASH del contenido del fichero, de tal forma que sin necesidad de descargar el fichero realmente, puedo comprobar si ha sido modificado o no.

El principal problema que estoy teniendo es con el propio componente TIDHTP de las INDY, que al llamar al procedimiento HEAD, este no realiza ningún redirecionamiento para aquellas URLs que lo solicitan. Aunque si la llamada se hace con GET si obtengo los datos correctamente. ¿Se puede hacer redireccionamiento con HEAD?

Por otro lado en un par de servidores de unos aproximadamente siete u ocho con los que trabajo actualmente y solo con algunos ficheros, no en todos, el tamaño de fichero que obtengo no es el correcto, la diferencias son de muy pocos bytes, pero no llega a coincidir. ¿Es realmente este parametro fiable?

Agradezco si alguien puede decirme algo al respecto
Un Saludo
Responder Con Cita
  #2  
Antiguo 05-01-2016
Avatar de rruz
[rruz] rruz is offline
Miembro Premium
 
Registrado: jun 2006
Posts: 146
Poder: 18
rruz Va por buen camino
Intenta estableciendo el valor de la propiedad HandleRedirects a True (HandleRedirects:=True
Responder Con Cita
  #3  
Antiguo 05-01-2016
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
Gracias rruz por responder

No lo especifique en el mensaje anterior, pero si esta activa la propiedad HandleRedirects , ya que al hacer el GET sobre la misma URL, se realizan todos los redireccionamientos para descargar el fichero sin problemas.

pongo aqui la configuracion del TIDHTTP

Código Delphi [-]
  with IdHTTP1 do
  begin
    Name := 'IdHTTP1';
    Intercept := IdConnectionIntercept1;
    IOHandler := IdSSLIOHandlerSocketOpenSSL1;
    AllowCookies := True;
    HandleRedirects := True;
    RedirectMaximum := 50;
    HTTPOptions := [hoForceEncodeParams];
    OnRedirect := IdHTTP1Redirect;
    CookieManager := IdCookieManager1;
    Compressor := IdCompressorZLib1;
  end;

y el error que estoy obteniendo cuando intento acceder a esta URL es 405: HTTP/1.1 405 Method Not Allowed


¿hay alguna forma de poder saber la URL de redirección sin llegar a descargar el contenido?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Leer un fichero PDF para grabar información en una Base de Datos ALMERA Impresión 0 06-03-2009 14:13:54
Extraer informacion de un fichero mp3 miguel_e Varios 3 25-09-2007 19:22:22
Como puedo leer la informacion de los fragmentos de un fichero comprimido en ntfs? leonelpereda Varios 0 31-08-2006 17:27:59
Obtener un fichero adjunto a un nodo de un fichero XML muntasil Internet 0 18-07-2006 12:57:57
Insertar al principio de un fichero de texto informacion pepecharlie67 Varios 9 10-01-2006 19:06:22


La franja horaria es GMT +2. Ahora son las 19:27:46.


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