Comment recuperer un fichier via FTP

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Comment recuperer un fichier via FTP

Message 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:
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Re: Comment recuperer un fichier via FTP

Message 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 ?
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

jutilise les fonctions reseau de pure
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message 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:
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message 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:
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message 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 
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message 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
Dernière modification par cha0s le dim. 06/mars/2005 15:20, modifié 1 fois.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message 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
Répondre