URLDownloadToFile_
Publié : lun. 23/juil./2007 15:49
Comment connaitre la taille d'un fichier avant de lancer la commande URLDownloadToFile_ ( de l'API Win32) ?
Merci d'avance
Merci d'avance
Code : Tout sélectionner
E_OUTOFMEMORY
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")))