URLDownloadToFile_

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

URLDownloadToFile_

Message par Droopy »

Comment connaitre la taille d'un fichier avant de lancer la commande URLDownloadToFile_ ( de l'API Win32) ?

Merci d'avance
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Anonyme

Message par Anonyme »

je ne vois pas comment t'aider, mais un truc à la barbare peut marcher
j'ai lu sur msdn que cette fonction peut renvoyer cette constante :

Code : Tout sélectionner

E_OUTOFMEMORY
ce qui signifie qu'il na pas assez de mémoire pour stocké le fichier proprement dit. Tu fixe la mémoire à 1 bytes , et tant que URLDownloadToFile_() = E_OUTOFMEMORY , alors tu incrémentes ta zone mémoire de 1 bytes , etc...
a moins qu'il existe une commande pour cela...
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Droopy je ne suis pas trés performant en C mais j'ai trouvé cela :


public static String getFileSize (String url) throws Exception
{
URL aURL = new URL (url);
URLConnection yc = aURL.openConnection ();
// recupere la taille du fichier .....
int FileLenght = yc.getContentLength();

if (FileLenght == -1 ) {
throw new IOException("Fichier non valide.");
}
return FileLenght;
}

J'espère que tu pourras en tirere quelque chose !
Denis

Bonne Jounée à tous
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Brossden? Mais t'es en vie? :D Ton PC, tu l'as désinfecté?
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Merci les gars, j'ai eu une réponse de NetMaestro sur le forum anglais, qui m'a aiguillé sur le même type de code que nico .
J'ai modifié le code en question pour répondre à mon besoin:

Code : Tout sélectionner

;/ Basé sur le code de Joakim L. Christiansen

Procedure HttpFileSize(Url.s)
  hInet = InternetOpen_("Downloader",0,0,0,0) 
  hURL  = InternetOpenUrl_(hInet,Url,0,0,$80000000,0)
  
  BufferLength = 2048
  Buffer.s = Space(BufferLength)
  BufferLengthWas = BufferLength
  
  Domain.s  = StringField(Url,3,"/")
  hInetCon = InternetConnect_(hInet,Domain,80,#Null,#Null,3,0,0) 
  If hInetCon 
    hHttpOpenRequest = HttpOpenRequest_(hInetCon,"HEAD",ReplaceString(Url,"http://"+Domain+"/",""),#Null,#Null,0,$80000000,0) 
    If hHttpOpenRequest 
      iretval = HttpSendRequest_(hHttpOpenRequest,#Null,0,0,0) 
      If iretval 
        HttpQueryInfo_(hHttpOpenRequest,19,@Buffer,@BufferLength,0)
        String.s = PeekS(@Buffer,BufferLength): BufferLength = BufferLengthWas 
        If Trim(String.s) = "200" 
          HttpQueryInfo_(hHttpOpenRequest,22,@Buffer,@BufferLength,0) 
          String.s = PeekS(@Buffer,BufferLength): BufferLength = BufferLengthWas 
          Debug String.s
          If FindString(String.s,"Content-Length:",1) 
            i = FindString(String.s,"Content-Length:",1) + Len("Content-Length:") 
            String.s = Mid(String.s,i,Len(String.s)-i) 
            FileSize = Val(Trim(String.s)) 
          EndIf 
        EndIf 
      EndIf 
    EndIf 
  EndIf 
  
  InternetCloseHandle_(hURL) 
  InternetCloseHandle_(hInetCon) 
  InternetCloseHandle_(hInet) 
  ProcedureReturn FileSize
EndProcedure

MessageRequester("",Str(HttpFileSize("http://acervo.gratis.com.br/arquivos/distrib/544/SafariSetup.exe")))
Anonyme

Message par Anonyme »

Effectivement , c'est plus propre et plus serieux que ma méthode néandertalienne :D
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Je ne suis pas encore mort Ollivier, c'est mon PC de bureau qui est vérolé pas le portable depuis lequel j'ai plaisir à voir que tu m'espérais ....Couic ! :o
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Salut, je pose mes questions ici pour éviter d'ouvrir un nouveau sujet sur le même thème.

Savez vous s'il est possible de lancer un téléchargement avec URLDownloadToFile_() sur un fichier protégé en htaccess?
si oui comment?
Ou alors faut-il obligatoirement ouvrir une connexion ftp au serveur où se trouve le fichier ? (méthode que j'utilise actuellement)

merci.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Répondre