Page 1 sur 2

Recevoir fichier d'un serveur HTTP

Publié : ven. 17/févr./2006 18:20
par wolfjeremy
Salut, je voulais savoir, comment je peut par exemple recuperer une image, sur un serveur http ?

Merci d'avance pour votre réponse.

Publié : ven. 17/févr./2006 20:21
par Le psychopathe
Si l'image n'est pas trop grosse tu peux la télécharger avec urldownloadfile() qui bloque le programe jusqu'a la fin du téléchargement donc tu peux le mettre dans un thread. Pour avoir un call back avec barre de progression recherche les post sur urldownloadfile sur le forum ( un de moi) car il y a un code source complet mais compliqué bien que commenté en Anglais.
voilà :wink:

Publié : ven. 17/févr./2006 20:44
par wolfjeremy
super merci :o

Publié : ven. 17/févr./2006 21:00
par wolfjeremy
C'est une commande pour la version 4 ? :cry:

Publié : sam. 18/févr./2006 1:34
par Flype
non, c'est une commande de l'api windows

Code : Tout sélectionner

url.s = "http://www.purebasic.com/images/logopb.gif"
out.s = "c:\purebasic.gif"

Import "urlmon.lib"
  
  Download.l(*pCaller.l,szURL.s,szFileName.s,*dwReserved.l,*lpfnCB.l) As "_URLDownloadToFileW@20"
  
EndImport

Debug Download(0, url, out, 0, 0)
Debug URLDownloadToFile_(0, url, out, 0, 0)

Publié : sam. 18/févr./2006 11:17
par wolfjeremy
Ha bon :D super, merci.

Publié : sam. 18/févr./2006 11:40
par wolfjeremy
Je doit mettre quoi a " Import "urlmon.lib" " ? :oops:

Publié : sam. 18/févr./2006 12:01
par julien
dommage que cela ne fonctionne pas avec un proxy

Publié : sam. 18/févr./2006 14:35
par Le psychopathe
wolfjeremy a écrit :Je doit mettre quoi a " Import "urlmon.lib" " ? :oops:
Tu n'y touches pas !
Tu peux changer cela :
url.s = "http://www.purebasic.com/images/logopb.gif" ; ce que tu veux télécharger
out.s = "c:\purebasic.gif" ; l'endroit où tu enregistres le fichier

Voilà :wink:

Publié : sam. 18/févr./2006 14:45
par wolfjeremy
Ha... parce que si j'y touche pas sa va pas lol

Il me dit syntax error!

Publié : sam. 18/févr./2006 17:43
par Le psychopathe
Il faut que tu utilises ce code sur Pure Basic v4 beta X

Publié : sam. 18/févr./2006 18:12
par wolfjeremy
Ha merde ok, j'ai pas la beta :wink: merci.

Publié : sam. 18/févr./2006 18:37
par nico
Mais tu n'as pas du tout besoin de la bêta pour faire fonctionner ce code mais il te faut une version enregistrée pour exécuter les API:

Code : Tout sélectionner

Procedure Ansi2Uni(ansi.s) 
    size.l=MultiByteToWideChar_(#CP_ACP,0,ansi,-1,0,0)    
    Dim unicode.w(size) 
    MultiByteToWideChar_(#CP_ACP, 0, ansi, Len(ansi), unicode(), size)  
    ProcedureReturn unicode()  
EndProcedure 

If OpenWindow(0, 200, 200, 400, 100, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "PureBasic Window") 
  CreateGadgetList(WindowID(0)) 
  ButtonGadget(0, 320, 20, 60, 20, "Go") 
  StringGadget(1,10,20,300,20,"Borderless StringGadget",#PB_String_BorderLess) 
EndIf    
SetGadgetText(1, "http://www.purebasic.com/screenshots/Editor.png") 
Repeat 
  event = WindowEvent() 
  Select event 
    Case #PB_EventGadget 
      Select EventGadgetID() 
        Case 0 
          If OpenLibrary(0,"shdocvw.dll") And IsFunction(0,"DoFileDownload") 
            texte$=GetGadgetText(1) 
            CallFunction(0,"DoFileDownload",Ansi2Uni(texte$)) 
          EndIf 
      EndSelect 
  EndSelect 
Until event =#PB_EventCloseWindow  
CloseLibrary(0) 
End

Publié : sam. 18/févr./2006 18:39
par wolfjeremy
merci bien.

Publié : mer. 22/févr./2006 17:22
par Le psychopathe
Nico j'ai essayé ton code sur PB 3.94 et v4 et il plante sur les deux.