Page 1 sur 1

Comment recuperer un fichier via FTP

Publié : sam. 05/mars/2005 16:38
par cha0s
bonjour tout le monde je suis un petit nouveau de la comunauté de pure et je dévelope actuellement un programme qui me permetra de faire la mise a jour d"un de mes logiciel (codé en darkbasic) via mon ftp .

Donc apres quelques recherche sur le forum englais et francais jai donc reussir a etablir une conection avec mon ftp et a comuniquer avec lui jusqu ici aucun problem donc etape suivante recuperer un simple fichier ,je lui demande la taille ,il me repond ,je specifie le port ensuite le fichier qu'il doit menvoyer ,il continue a me repondre puis me dit que le fichier a été bien recue mais bon moi jai rien vue venir :p .

jai fait des test avec la comande pour recevoir des fichier ce fut un echec alors je me suis dit que la comande pour recevoir un message doit sufire, ensuite il suffit de mettre les données dans un fchier vide que je vient de creer ,mais sa ne marche pas ,donc si quelqun a realisé cette exploit jaimerais bien qu'il m'aide si possible :lol:

Re: Comment recuperer un fichier via FTP

Publié : sam. 05/mars/2005 18:34
par Oliv
cha0s a écrit :bonjour tout le monde je suis un petit nouveau de la comunauté de pure et je dévelope actuellement un programme qui me permetra de faire la mise a jour d"un de mes logiciel (codé en darkbasic) via mon ftp .

Donc apres quelques recherche sur le forum englais et francais jai donc reussir a etablir une conection avec mon ftp et a comuniquer avec lui jusqu ici aucun problem donc etape suivante recuperer un simple fichier ,je lui demande la taille ,il me repond ,je specifie le port ensuite le fichier qu'il doit menvoyer ,il continue a me repondre puis me dit que le fichier a été bien recue mais bon moi jai rien vue venir :p .

jai fait des test avec la comande pour recevoir des fichier ce fut un echec alors je me suis dit que la comande pour recevoir un message doit sufire, ensuite il suffit de mettre les données dans un fchier vide que je vient de creer ,mais sa ne marche pas ,donc si quelqun a realisé cette exploit jaimerais bien qu'il m'aide si possible :lol:
Tu utilises les API ou directement les fonctions réseau de PureBasic ?

Publié : sam. 05/mars/2005 20:18
par cha0s
jutilise les fonctions reseau de pure

Publié : sam. 05/mars/2005 21:28
par Oliv
Alors ça va être dur, moi j'avais réussi mais ce n'étais pas compatible avec tous les FTP donc j'ai laissé tombé. En fait c'est chiant car tu as une connection pour le controle sur le port 21 et une pour les donées sur un port aléatoire. Va voir sur www.salemioche.com pour comprendre. Sinon, prends les API :wink:

Publié : dim. 06/mars/2005 2:47
par cha0s
apres avoir galére jai decide de me jeter sur l'api :p donc je me conect et tout mais lorsque je veut recup le fichier ba il je sait aps ou il va :p

Code : Tout sélectionner

  #INTERNET_SERVICE_FTP=1 
  #INTERNET_OPEN_TYPE_DIRECT=1 
  #FTP_PORT=21 
  #FTP_TRANSFER_ASCII=1 
  #FTP_TRANSFER_BINARY=2 


Procedure ftp()
hInternet=InternetOpen_("FTP",#INTERNET_OPEN_TYPE_DIRECT,Proxy,ProxyBypass,0) 
hConnect=InternetConnect_(hInternet,Adresse$+PWD$,#FTP_PORT,Login$,Pass$,#INTERNET_SERVICE_FTP,0,0)
 MessageRequester("","File has been sent to2",0) 

FtpSetCurrentDirectory_(hConnect,"files")


If FtpGetFile_(hConnect,"space.txt","C:\space.txt",0,0,0,0) 
 MessageRequester("","sa marche",0) 
EndIf 

If hInternetConnect 
     InternetCloseHandle_(hInternetConnect) 
EndIf 
If hInternetSession 
     InternetCloseHandle_(hInternetSession) 
EndIf 


EndProcedure 
sis a continue je vais faire une dépression :p
PS : jai le message "sa marche" mais bon jen ai pas limpression :lol:

Publié : dim. 06/mars/2005 10:32
par Oliv
Sans le code complet c'est dur de te donner ce qui ne vas pas :wink:
Un exemple de codearchiv qui envoi un fichier mais c'est la même chose que pour en récupérer :

Code : Tout sélectionner

; English forum: http://purebasic.myforums.net/viewtopic.php?t=5983&highlight=
; Author: El_Choni
; Date: 25. April 2003

  #FTPServer=0 
  #UserName=1 
  #Password=2 
  #FileNameGet=3 
  #FileNameSend=4 
  #txt1=5 
  #txt2=6 
  #txt3=7 
  #txt4=8 
  #txt5=9 
  #Info=10 
  #Send=11 

  #INTERNET_SERVICE_FTP=1 
  #INTERNET_OPEN_TYPE_DIRECT=1 
  #FTP_PORT=21 
  #FTP_TRANSFER_ASCII=1 
  #FTP_TRANSFER_BINARY=2 

  hWnd=OpenWindow(#Info,(GetSystemMetrics_(#SM_CXSCREEN)-200)/2,(GetSystemMetrics_(#SM_CYSCREEN)-180)/2,200,245,#PB_Window_TitleBar,"Lifter") 

  If hWnd=0 Or CreateGadgetList(hWnd)=0:End:EndIf 

  TextGadget(#txt1,10,10,180,20,"FTP Server:") 
  TextGadget(#txt2,10,50,180,20,"User Name:") 
  TextGadget(#txt3,10,90,180,20,"Password:") 
  TextGadget(#txt2,10,130,180,20,"File Name:") 
  TextGadget(#txt2,10,170,180,20,"Location:") 

  StringGadget(#FTPServer,10,25,180,20,"") 
  StringGadget(#UserName,10,65,180,20,"") 
  StringGadget(#Password,10,105,180,20,"") 
  StringGadget(#FileNameGet,10,145,180,20,"") 
  StringGadget(#FileNameSend,10,185,180,20,"") 

  ButtonGadget(#Send,75,225,50,22,"Send") 

;  Proxy.s=""  ; Can't use empty strings in InternetOpen_() (valid name or #NULL) 
;  ProxyBypass.s="" 

  Repeat 
    EventID = WaitWindowEvent() 
    If EventID=#PB_EventGadget 
      If EventGadgetID()=#Send 

        ServerName.s=GetGadgetText(#FTPServer) 
        UserName.s=GetGadgetText(#UserName) 
        Password.s=GetGadgetText(#Password) 
        localfile.s=GetGadgetText(#FileNameGet) 
        remotefile.s=GetGadgetText(#FileNameSend) 

        hInternet=InternetOpen_("FTP",#INTERNET_OPEN_TYPE_DIRECT,Proxy,ProxyBypass,0) 
        hConnect=InternetConnect_(hInternet,ServerName,#FTP_PORT,UserName,Password,#INTERNET_SERVICE_FTP,0,0) 

        If FtpPutFile_(hConnect,localfile,remotefile,#FTP_TRANSFER_ASCII,0) 
          MessageRequester("","File has been sent",0) 
        EndIf 

        If hInternetConnect 
          InternetCloseHandle_(hInternetConnect) 
        EndIf 

        If hInternetSession 
          InternetCloseHandle_(hInternetSession) 
        EndIf 
        
      EndIf 
    EndIf 
  Until EventID=#PB_EventCloseWindow 
End 

Publié : dim. 06/mars/2005 14:31
par cha0s
jaiiii trouveeeee :D en fait jai regardé les variables que me retournait chaque fonction or il se trouve que jme suis planté lorsque je me conectait donc voila c'est réglé et sa marche :p

Publié : dim. 06/mars/2005 14:43
par Oliv
cha0s a écrit :jaiiii trouveeeee :D en fait jai regardé les variables que me retournait chaque fonction or il se trouve que jme suis plané lorsque je me conectait donc voila c'est réglé et sa marche :p
Ok :D