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à

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

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

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

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

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" " ?

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à

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

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.