Page 1 sur 1

ReceiveFTPFile bloqué

Publié : dim. 13/nov./2016 1:32
par omega
Bonsoir

Je ne comprends pas pourquoi Cette commande ftp ne marche pas chez moi.
J'ai affiché le contenu du serveur ftp sur un grid (GridFtp)
J'ai affiché un chemin local (D:\)
j'ai choisi le fichier (ftp) à télécharger (Il n'y a aucune erreur jusqu'ici puisque le fichier est affiché et coloré)
J'appuie sur le bouton TELECHARGER, et voilà que ça plante... , pourtant j'ai fait exprès de choisir un petit fichier texte qui ne contient
presque rien (50 octets environ)...

Code : Tout sélectionner

;FichierFtp$ est le fichier sélectionné sur le grid du serveur ftp à télécharger 
Sfile.s=FichierFtp$

;CheminLocal$ est le chemin que j'ai choisi pour enregistrer le fichier téléchargé
Dfile.s=CheminLocal$+FichierFtp$

If ReceiveFTPFile(0,sfile,dFile,0)
   Debug "ok"
Else
   Debug "error"
EndIf       
,REMARQUES: Aucun message ne s'affiche sur le debogueur, donc il s'agit bien d'un blocage juste après la commande ReceiveFtpFile...


Merci

Re: ReceiveFTPFile bloqué

Publié : dim. 13/nov./2016 9:03
par Marc56
Possibilité: un firewall local qui laisse passer le canal de commande (21) mais pas celui de données (20) ?

Re: ReceiveFTPFile bloqué

Publié : dim. 13/nov./2016 12:29
par Ar-S
Salut Omega,
Post ton code complet sans les mots de passe... Sait on jamais

Re: ReceiveFTPFile bloqué

Publié : dim. 13/nov./2016 14:56
par case
et un

debug Dfile
debug Sfile


ça donne bien les bon chemins / url car un caractère en plus ou en moins ça peux faire toute la différence ^^

Re: ReceiveFTPFile bloqué

Publié : dim. 13/nov./2016 20:13
par omega
Voici le code complet. Mais il va falloir prévoir des images ou alors les remplacer par des boutons gadgets
(les gadgets ENVOYER, TELECHARGER, SUPPRIMER et SELECTIONNER UN CHEMIN LOCAL sont des images)
A vous de jouer, soit vous remplacez toutes les images par des boutons en gardant leur nom, soit vous prévoyez des images..

A+

Code : Tout sélectionner

;Ftp test FTP personnel 

Enumeration
#winmenu
#frame1
#frame2
#frame3
#frame4
#txtServeurFtp
#txtUtilisateur
#txtMotDePasse
#txtracineftp
#racineftp
#retourRacineFtp
#ServeurFtp
#Utilisateur
#MotDePasse
#Connecter
#Envoyer
#Telecharger
#Supprimer
#txtCheminLocal
#txtCheminFtp
#CheminLocal
#CheminFtp
#Parcourir
#gridlocal
#gridftp
#quitter
#initialiser
#pb
#statut
EndEnumeration

;------------------------------------------------------------------------------------------------------------------------------
UseJPEGImageDecoder()
UsePNGImageDecoder()

imgftp = CatchImage(0, ?imgftp)
parc = CatchImage(1, ?parc)
ouvrir=CatchImage(2, ?ouvrir)
imgEnvoyer=CatchImage(3, ?imgEnvoyer)
imgTelecharger=CatchImage(4, ?imgTelecharger)
imgSupprimer=CatchImage(5, ?imgSupprimer)

DataSection
imgftp:
IncludeBinary "images\imgftp.png"
parc:
IncludeBinary "images\parc.jpg"
ouvrir:
IncludeBinary "images\Ouvrir.jpg"
imgEnvoyer:
IncludeBinary "images\imgsend.png"
imgTelecharger:
IncludeBinary "images\imgupload.png"
imgSupprimer:
IncludeBinary "images\imgdel.png"
EndDataSection

;------------------------------------------------------------------------------------------------------------------------------
Global ServeurFtp$,Utilisateur$,MotDePasse$,fichier$,wrow,type$,ext$,img$
Global CheminLocal$,CheminFtp$,FichierLocal$,fichierFtp$,Resultat,string$,ExitMenu

;-------------------------------- Test si image--------------------------------- --------------------
Procedure Is_Image(string$)
Result=0  
Img$=UCase(string$)
If img$="JPG" Or img$="PNG" Or img$="GIF" Or img$="TIFF" Or img$="BMP" Or img$="JPEG"
   Result=1
EndIf
ProcedureReturn Result
EndProcedure

;------------------------------------------------------------------------------------------------------------------------------
Procedure AfficherDossierFtp() 
ClearGadgetItemList(#gridftp)
If ExamineFTPDirectory(0)
   While NextFTPDirectoryEntry(0)
         fichier$=FTPDirectoryEntryName(0)
         If FTPDirectoryEntryType(0)=#PB_FTP_Directory
            type$="Dossier"
         Else
            ext$=GetExtensionPart(fichier$)
            type$="Fichier " + ext$ 
            If Is_Image(ext$)
               type$="Image " + ext$
            EndIf   
            If ext$="ico" Or ext$="ICO"
               type$="Icône"
            EndIf   
         EndIf
         If fichier$<>"." And fichier$<>".."   
            AddGadgetItem(#gridftp,-1,fichier$ + Chr(10) + type$)
            If type$="Dossier"
               SetGadgetItemColor(#gridftp,wrow,#PB_Gadget_BackColor,RGB(237, 215, 74),0)
               SetGadgetItemColor(#gridftp,wrow,#PB_Gadget_BackColor,RGB(237, 215, 74),1)
            EndIf
            wrow=wrow+1
         EndIf    
      Wend
EndIf    
EndProcedure

;------------------------------------------------------------------------------------------------------------------------------
Procedure Connecter() 
ClearGadgetItemList(#gridftp)
ServeurFtp$=GetGadgetText(#ServeurFtp)
Utilisateur$=GetGadgetText(#Utilisateur)
MotDePasse$=GetGadgetText(#MotDePasse)
CheminFtp$=GetGadgetText(#racineftp)
SetGadgetText(#CheminFtp,CheminFtp$) 
wrow=0

If Len(ServeurFtp$)<=0
   MessageRequester("Erreur","Serveur ftp incorrect ! ")
   Goto fin_connecter
EndIf
If Len(Utilisateur$)<=0
   MessageRequester("Erreur","Nom d'utilisateur incorrect ! ")
   Goto fin_connecter
EndIf

If OpenFTP(0,ServeurFtp$,Utilisateur$,MotDePasse$)
   SetFTPDirectory(0,CheminFtp$)
   AfficherDossierFtp()
Else
   Debug "Impossible de se connecter à " + serveurftp$ + " !"
   Goto Fin_connecter
EndIf

Fin_connecter:
EndProcedure

;------------------------------------------------------------------------------------------------------------------------------
Procedure Envoyer() 
wpas=0
SetGadgetState(#pb,0)
SetGadgetText(#statut,"")

If CountGadgetItems(#gridftp)<=0
   MessageRequester("Erreur","Vous n'êtes pas connecté au serveur ftp ! ")
   Goto fin_Envoyer
EndIf

fichier$=GetFilePart(FichierLocal$)
SetGadgetText(#statut,"Transfert de fichier " + fichier$ + " en cours...")
wpas=1
SetGadgetState(#pb,wpas)
   
If SendFTPFile(0, FichierLocal$,fichier$)
   For wpas=1 To 300
       SetGadgetState(#pb,wpas)
       Delay(10)
   Next wpas    
   SetGadgetText(#Statut,"Le fichier a été transféré avec succès.")
   AddGadgetItem(#gridftp,-1,fichier$+Chr(10)+type$)
Else
    SetGadgetText(#Statut,"Le fichier n'a pas pu être transféré !")
EndIf

Fin_Envoyer:
EndProcedure

;------------------------------------------------------------------------------------------------------------------------------
Procedure Telecharger() 
wpas=0
SetGadgetState(#pb,0)
SetGadgetText(#statut,"")

If CountGadgetItems(#gridftp)<=0
   MessageRequester("Erreur","Vous n'êtes pas connecté au serveur ftp ! ")
   Goto fin_telecharger
EndIf

CheminLocal$=GetGadgetText(#CheminLocal)

If Len(CheminLocal$)<=0 And CountGadgetItems(#gridlocal)<=0
   MessageRequester("Erreur","Indiquez le chemin de destination !")
   Goto fin_telecharger
EndIf

fichier$=FichierFTP$
SetGadgetText(#statut,"Téléchargement du fichier " + fichier$ + " en cours...")
wpas=1
SetGadgetState(#pb,wpas)
 
Sfile.s=FichierFtp$
Dfile.s=CheminLocal$+FichierFtp$

If ReceiveFTPFile(0,sfile,dFile,0)
   Debug "ok"
Else
   Debug "error"
EndIf       

;   For wpas=1 To 300
;       SetGadgetState(#pb,wpas)
;       Delay(10)
;   Next wpas    
;   SetGadgetText(#Statut,"Le fichier a été téléchargé avec succès.")
;   AddGadgetItem(#gridlocal,-1,CheminLocal$+FichierFtp$+Chr(10)+type$)
;Else
;    SetGadgetText(#Statut,"Le fichier n'a pas pu être téléchargé !")
;EndIf

fin_telecharger:
EndProcedure


;------------------------------------------------------------------------------------------------------------------------------
Procedure Supprimer() 
wpas=0
SetGadgetState(#pb,0)
SetGadgetText(#statut,"")

If CountGadgetItems(#gridftp)<=0
   MessageRequester("Erreur","Il semble que vous n'êtes pas connecté au serveur ftp ! ")
   Goto fin_supprimer
EndIf

fichier$=FichierFTP$
SetGadgetText(#statut,"Suppression du fichier " + fichier$ + " en cours...")
 
If type$<>"Dossier" 
   If DeleteFTPFile(0,fichier$)
      SetGadgetText(#Statut,"Le fichier a été supprimé")
      For wrow=0 To CountGadgetItems(#gridftp)-1
          fichier$=GetGadgetItemText(#gridftp,wrow,0)
          If fichier$=fichierFtp$
             RemoveGadgetItem(#gridftp,wrow)
             wrow=CountGadgetItems(#gridftp)-1
          EndIf
      Next wrow
   Else
      SetGadgetText(#Statut,"Le fichier n'a pas pu être supprimé !")
   EndIf       
EndIf

fin_supprimer:
EndProcedure

;------------------------------------------------------------------------------------------------------------------------------
Procedure AfficherDossierLocal()
ClearGadgetItemList(#gridlocal)
wrow=0
CheminLocal$=GetGadgetText(#CheminLocal)
If ExamineDirectory(0, CheminLocal$, "*.*")  
      While NextDirectoryEntry(0)
         fichier$=DirectoryEntryName(0)
         If DirectoryEntryType(0)= #PB_DirectoryEntry_Directory
            type$="Dossier"
         Else
            ext$=GetExtensionPart(fichier$)
            type$="Fichier " + ext$
            If Is_Image(ext$)
               type$="Image " + ext$
            EndIf   
            If ext$="ico" Or ext$="ICO"
               type$="Icône"
            EndIf   
         EndIf
         If fichier$<>"." And fichier$<>".." And UCase(fichier$)<>"THUMBS.DB"  
            AddGadgetItem(#gridlocal,-1,CheminLocal$+fichier$ + Chr(10) + type$)
            If type$="Dossier"
               SetGadgetItemColor(#gridlocal,wrow,#PB_Gadget_BackColor,RGB(237, 215, 74),0)
               SetGadgetItemColor(#gridlocal,wrow,#PB_Gadget_BackColor,RGB(237, 215, 74),1)
            EndIf
            wrow=wrow+1
         EndIf    
      Wend
      FinishDirectory(0)
EndIf
EndProcedure


;------------------------------------------------------------------------------------------------------------------------
InitNetwork()
ExamineDesktops()
wlar=DesktopWidth(0)-300
whaut=DesktopHeight(0)-100
OpenWindow(#winmenu,0,0,wlar,whaut,"FTP PERSONNEL - Par Omega - (OS: winXP et +, RAM>=1Go)", #PB_Window_ScreenCentered|#PB_Window_TitleBar |  #PB_Window_SystemMenu  |#PB_Window_SizeGadget |#PB_Window_TitleBar |#PB_Window_MinimizeGadget) 
If CreateGadgetList(WindowID(#winmenu))
   wrow=10
   Frame3DGadget(#frame1, 10, wrow, 540,120, "Informations de connection...", #PB_Frame3D_Flat)
   ButtonImageGadget(0,630,wrow,370,ImageHeight(0)-10,ImageID(0))
   wrow=wrow+20 
   TextGadget(#txtserveurftp,20, wrow, 150, 20, "SERVEUR FTP :")
   StringGadget(#serveurftp,180, wrow, 200, 20, "")
   ButtonGadget(#Connecter, 410, wrow-2, 100, 28,"Se connecter")
   ButtonGadget(#Initialiser,410, wrow+34, 100, 28,"Initialiser")
   ButtonGadget(#quitter, 410, wrow+68, 100, 28,"Quitter")
   wrow=wrow+22
   TextGadget(#txtUtilisateur,20, wrow, 150, 20, "UTILISATEUR :")
   StringGadget(#Utilisateur,180, wrow, 200, 20, "")
   wrow=wrow+22
   TextGadget(#txtMotDePasse,20, wrow, 150, 20, "MOT DE PASSE : ")
   StringGadget(#MotDePasse,180, wrow, 200, 20, "", #PB_String_Password)
   wrow=wrow+22
   TextGadget(#txtRacineftp,20, wrow,150, 20, "REPERTOIRE RACINE :")
   StringGadget(#Racineftp,180, wrow, 200, 20, "public_html")
   wrow=wrow+50
   TextGadget(#txtCheminLocal,10, wrow, 120, 20, "DOSSIER LOCAL >>")
   StringGadget(#CheminLocal,125, wrow, 390, 20, "")
   ButtonImageGadget(#Parcourir,520,wrow-3,25,25,ImageID(1))
   TextGadget(#txtCheminFtp,630, wrow, 100, 20, "DOSSIER FTP >>")
   StringGadget(#CheminFtp,730, wrow, 230, 20, "")
   ButtonImageGadget(#RetourRacineFtp,975,wrow-3,25,25,ImageID(2))
   wrow=wrow+30
   ListIconGadget(#gridlocal,10, wrow,540,250, "Fichiers (espace local)",400,#PB_ListIcon_GridLines )
   AddGadgetColumn(#gridlocal,1, "Type",100)
   ButtonImageGadget(#Envoyer,560,wrow+30,ImageWidth(3),ImageHeight(3),ImageID(3))
   ButtonImageGadget(#Supprimer,560,wrow+100,ImageWidth(5),ImageHeight(5),ImageID(5))
   ButtonImageGadget(#Telecharger,560,wrow+170,ImageWidth(4),ImageHeight(4),ImageID(4))
   ListIconGadget(#gridftp,630, wrow,370,250, "Fichiers (espace serveur ftp)",250,#PB_ListIcon_GridLines )
   AddGadgetColumn(#gridftp,1, "Type",100)
   wrow=wrow+260
   ProgressBarGadget(#pb,10,wrow,540,15,0,300)
   wrow=wrow+26
   TextGadget(#statut,10, wrow, 700, 20, "")
EndIf

GadgetToolTip(#Parcourir,"Sélectionnez un dossier/fichier...")
GadgetToolTip(#retourRacineFtp,"Revenir à la racine du serveur...")
GadgetToolTip(#Envoyer,"Transférer les fichiers vers le serveur ftp")
GadgetToolTip(#Telecharger,"Télécharger le fichier sélectionné")
GadgetToolTip(#Supprimer,"Supprimer le fichier sélectionné")
 
SetGadgetColor(#CheminLocal,#PB_Gadget_FrontColor,RGB(60, 51, 195))
SetGadgetColor(#CheminFtp,#PB_Gadget_FrontColor,RGB(60, 51, 195))
SetGadgetColor(#statut,#PB_Gadget_FrontColor,RGB(41, 42, 190))

SetGadgetColor(#gridftp,#PB_Gadget_FrontColor,RGB(124, 65, 158))
SetGadgetColor(#gridlocal,#PB_Gadget_FrontColor,RGB(24, 90, 169))

SetGadgetColor(#serveurftp,#PB_Gadget_FrontColor,RGB(82, 41, 143))
SetGadgetColor(#utilisateur,#PB_Gadget_FrontColor,RGB(82, 41, 143))
SetGadgetColor(#motdepasse,#PB_Gadget_FrontColor,RGB(82, 41, 143))
SetGadgetColor(#racineftp,#PB_Gadget_FrontColor,RGB(82, 41, 143))

If LoadFont(1, "Calibri", 10,#PB_Font_Bold) 
   SetGadgetFont(#gridftp, FontID(1)) 
EndIf

AddKeyboardShortcut(#Winmenu,#PB_Shortcut_Return,111) 

Repeat
EventId=WaitWindowEvent()

If EventID = #PB_Event_Menu 
   Select EventMenu() 
   Case 111 
   If  GetFocus_() = GadgetID(#CheminLocal)
       AfficherDossierlocal() 
   ElseIf  GetFocus_() = GadgetID(#serveurftp)
       SetFocus_(GadgetID(#utilisateur))
   ElseIf  GetFocus_() = GadgetID(#utilisateur)
       SetFocus_(GadgetID(#motdepasse))
   ElseIf  GetFocus_() = GadgetID(#motdepasse)
       SetFocus_(GadgetID(#racineftp))
   ElseIf  GetFocus_() = GadgetID(#racineftp)
       connecter() 
   EndIf    
   EndSelect
EndIf


If EventID = #PB_Event_Gadget
   Select EventGadget()

   Case #Connecter
         Connecter()
         
   Case #RetourRacineftp
         Connecter()

   Case #Parcourir
         CheminInitial$ = "C:\"   ; Répertoire par défaut qui sera affiché (une chaîne vide est aussi possible)
         Chemin$ = PathRequester("Choisissez un dossier", CheminInitial$)
         If Chemin$
            SetGadgetText(#CheminLocal,chemin$)
            AfficherDossierLocal()
         EndIf
    
   Case #gridftp
         wrow=GetGadgetState(#gridftp)
         If wrow>=0 And CountGadgetItems(#gridftp)>0
            fichier$=GetGadgetItemText(#gridftp,wrow,0)
            type$=GetGadgetItemText(#gridftp,wrow,1)
            If type$="Dossier"
               SetFTPDirectory(0,fichier$)
               SetGadgetText(#CheminFtp,fichier$)
               AfficherDossierFtp() 
            Else
               FichierFtp$=fichier$
            EndIf
         EndIf
   
   Case #gridlocal
         wrow=GetGadgetState(#gridlocal)
         If wrow>=0 And CountGadgetItems(#gridlocal)>0
            fichier$=GetGadgetItemText(#gridlocal,wrow,0)
            type$=GetGadgetItemText(#gridlocal,wrow,1)
            If type$="Dossier"
               SetGadgetText(#CheminLocal,fichier$+"\")
               AfficherDossierlocal() 
            Else
               fichierLocal$=fichier$
            EndIf
          EndIf

   Case #Envoyer
         If Len(fichierLocal$)>0
            Envoyer()
         EndIf
            
   Case #Telecharger
         If Len(fichierFtp$)>0
            Telecharger()
         EndIf

   Case #Supprimer
         If Len(fichierFtp$)>0
            Supprimer()
         EndIf

   Case #Quitter
         ExitMenu=1
         
   EndSelect
EndIf

If EventID=#PB_Event_CloseWindow
   ExitMenu=1
EndIf

Until ExitMenu=1
End

Re: ReceiveFTPFile bloqué

Publié : dim. 13/nov./2016 21:48
par Ar-S
Faudrait que tu te mettes à jour. N'ayant pas les images et surtout leur dimension pour les remplacer et ne sachant pas si tu utilises une version de PB un peu trop vieille (ClearGadgetItemList... etc... )
ça va pas etre facile... Tu pourrais au moins faire une archive avec tes images et l'uploader via http://www.tinyupload.com/ ou autre dizaines d’hébergeurs.

Re: ReceiveFTPFile bloqué

Publié : dim. 13/nov./2016 21:53
par omega
Ok, je vais simplifier.

Re: ReceiveFTPFile bloqué

Publié : lun. 14/nov./2016 12:01
par omega
J'ai remplacé les images par des boutons. C'est plus simple maintenant. Il suffit juste de renseigner le serveur ftp+mot de passe.

Code : Tout sélectionner

Enumeration
#winmenu
#frame1
#frame2
#frame3
#frame4
#txtServeurFtp
#txtUtilisateur
#txtMotDePasse
#txtracineftp
#racineftp
#retourRacineFtp
#ServeurFtp
#Utilisateur
#MotDePasse
#Connecter
#Envoyer
#Telecharger
#Supprimer
#txtCheminLocal
#txtCheminFtp
#CheminLocal
#CheminFtp
#Parcourir
#gridlocal
#gridftp
#quitter
#initialiser
#pb
#statut
EndEnumeration

;------------------------------------------------------------------------------------------------------------------------------
Global ServeurFtp$,Utilisateur$,MotDePasse$,fichier$,wrow,type$,ext$,img$
Global CheminLocal$,CheminFtp$,FichierLocal$,fichierFtp$,Resultat,string$,ExitMenu

;-------------------------------- Test si image--------------------------------- --------------------
Procedure Is_Image(string$)
Result=0  
Img$=UCase(string$)
If img$="JPG" Or img$="PNG" Or img$="GIF" Or img$="TIFF" Or img$="BMP" Or img$="JPEG"
   Result=1
EndIf
ProcedureReturn Result
EndProcedure

;------------------------------------------------------------------------------------------------------------------------------
Procedure AfficherDossierFtp() 
ClearGadgetItemList(#gridftp)
If ExamineFTPDirectory(0)
   While NextFTPDirectoryEntry(0)
         fichier$=FTPDirectoryEntryName(0)
         If FTPDirectoryEntryType(0)=#PB_FTP_Directory
            type$="Dossier"
         Else
            ext$=GetExtensionPart(fichier$)
            type$="Fichier " + ext$ 
            If Is_Image(ext$)
               type$="Image " + ext$
            EndIf   
            If ext$="ico" Or ext$="ICO"
               type$="Icône"
            EndIf   
         EndIf
         If fichier$<>"." And fichier$<>".."   
            AddGadgetItem(#gridftp,-1,fichier$ + Chr(10) + type$)
            If type$="Dossier"
               SetGadgetItemColor(#gridftp,wrow,#PB_Gadget_BackColor,RGB(237, 215, 74),0)
               SetGadgetItemColor(#gridftp,wrow,#PB_Gadget_BackColor,RGB(237, 215, 74),1)
            EndIf
            wrow=wrow+1
         EndIf    
      Wend
EndIf    
EndProcedure

;------------------------------------------------------------------------------------------------------------------------------
Procedure Connecter() 
ClearGadgetItemList(#gridftp)
ServeurFtp$=GetGadgetText(#ServeurFtp)
Utilisateur$=GetGadgetText(#Utilisateur)
MotDePasse$=GetGadgetText(#MotDePasse)
CheminFtp$=GetGadgetText(#racineftp)
SetGadgetText(#CheminFtp,CheminFtp$) 
wrow=0
If Len(ServeurFtp$)<=0
   MessageRequester("Erreur","Serveur ftp incorrect ! ")
   Goto fin_connecter
EndIf
If Len(Utilisateur$)<=0
   MessageRequester("Erreur","Nom d'utilisateur incorrect ! ")
   Goto fin_connecter
EndIf

If OpenFTP(0,ServeurFtp$,Utilisateur$,MotDePasse$)
   SetFTPDirectory(0,CheminFtp$)
   AfficherDossierFtp()
Else
   MessageRequester("Erreur","Impossible de se connecter à " + serveurftp$ + " !")
   Goto Fin_connecter
EndIf

Fin_connecter:
EndProcedure

;------------------------------------------------------------------------------------------------------------------------------
Procedure Envoyer() 
wpas=0
SetGadgetState(#pb,0)
SetGadgetText(#statut,"")

If CountGadgetItems(#gridftp)<=0
   MessageRequester("Erreur","Il semble que vous n'êtes pas connecté au serveur ftp ! ")
   Goto fin_Envoyer
EndIf

fichier$=GetFilePart(FichierLocal$)
SetGadgetText(#statut,"Transfert de fichier " + fichier$ + " en cours...")
wpas=1
SetGadgetState(#pb,wpas)
   
If SendFTPFile(0, FichierLocal$,fichier$)
   For wpas=1 To 300
       SetGadgetState(#pb,wpas)
       Delay(10)
   Next wpas    
   SetGadgetText(#Statut,"Le fichier a été transféré avec succès.")
   AddGadgetItem(#gridftp,-1,fichier$+Chr(10)+type$)
Else
    SetGadgetText(#Statut,"Le fichier n'a pas pu être transféré !")
EndIf

Fin_Envoyer:
EndProcedure

;------------------------------------------------------------------------------------------------------------------------------
Procedure Telecharger() 
wpas=0
SetGadgetState(#pb,0)
SetGadgetText(#statut,"")

If CountGadgetItems(#gridftp)<=0
   MessageRequester("Erreur","Il semble que vous n'êtes pas connecté au serveur ftp ! ")
   Goto fin_telecharger
EndIf

CheminLocal$=GetGadgetText(#CheminLocal)

If Len(CheminLocal$)<=0 And CountGadgetItems(#gridlocal)<=0
   MessageRequester("Erreur","Indiquez le chemin de destination !")
   Goto fin_telecharger
EndIf

fichier$=FichierFTP$
SetGadgetText(#statut,"Téléchargement du fichier " + fichier$ + " en cours...")
wpas=1
SetGadgetState(#pb,wpas)
 
Sfile.s=FichierFtp$
Dfile.s=CheminLocal$+FichierFtp$

Debug sfile
Debug dfile

If ReceiveFTPFile(0,sfile,dFile)
  Repeat
    Debug "FTPProgress = " + Str(FTPProgress(0))
    Delay(300)
  Until FTPProgress(0) = #PB_FTP_Finished Or FTPProgress(0) = #PB_FTP_Error
  Debug "finished"
 
    ;For wpas=1 To 300
    ;   SetGadgetState(#pb,wpas)
    ;   Delay(10)
   ;Next wpas    
   ;SetGadgetText(#Statut,"Le fichier a été téléchargé avec succès.")
   ;AddGadgetItem(#gridlocal,-1,CheminLocal$+FichierFtp$+Chr(10)+type$)
Else
   SetGadgetText(#Statut,"Le fichier n'a pas pu être téléchargé !")
EndIf

fin_telecharger:
EndProcedure

;------------------------------------------------------------------------------------------------------------------------------
Procedure Supprimer() 
wpas=0
SetGadgetState(#pb,0)
SetGadgetText(#statut,"")

If CountGadgetItems(#gridftp)<=0
   MessageRequester("Erreur","Il semble que vous n'êtes pas connecté au serveur ftp ! ")
   Goto fin_supprimer
EndIf

fichier$=FichierFTP$
SetGadgetText(#statut,"Suppression du fichier " + fichier$ + " en cours...")
 
If type$<>"Dossier" 
   If DeleteFTPFile(0,fichier$)
      SetGadgetText(#Statut,"Le fichier a été supprimé")
      For wrow=0 To CountGadgetItems(#gridftp)-1
          fichier$=GetGadgetItemText(#gridftp,wrow,0)
          If fichier$=fichierFtp$
             RemoveGadgetItem(#gridftp,wrow)
             wrow=CountGadgetItems(#gridftp)-1
          EndIf
      Next wrow
   Else
      SetGadgetText(#Statut,"Le fichier n'a pas pu être supprimé !")
   EndIf       
EndIf

fin_supprimer:
EndProcedure

;------------------------------------------------------------------------------------------------------------------------------
Procedure AfficherDossierLocal()
ClearGadgetItemList(#gridlocal)
wrow=0
CheminLocal$=GetGadgetText(#CheminLocal)
If ExamineDirectory(0, CheminLocal$, "*.*")  
      While NextDirectoryEntry(0)
         fichier$=DirectoryEntryName(0)
         If DirectoryEntryType(0)= #PB_DirectoryEntry_Directory
            type$="Dossier"
         Else
            ext$=GetExtensionPart(fichier$)
            type$="Fichier " + ext$
            If Is_Image(ext$)
               type$="Image " + ext$
            EndIf   
            If ext$="ico" Or ext$="ICO"
               type$="Icône"
            EndIf   
         EndIf
         If fichier$<>"." And fichier$<>".." And UCase(fichier$)<>"THUMBS.DB"  
            AddGadgetItem(#gridlocal,-1,CheminLocal$+fichier$ + Chr(10) + type$)
            If type$="Dossier"
               SetGadgetItemColor(#gridlocal,wrow,#PB_Gadget_BackColor,RGB(237, 215, 74),0)
               SetGadgetItemColor(#gridlocal,wrow,#PB_Gadget_BackColor,RGB(237, 215, 74),1)
            EndIf
            wrow=wrow+1
         EndIf    
      Wend
      FinishDirectory(0)
EndIf
EndProcedure


;------------------------------------------------------------------------------------------------------------------------
InitNetwork()
ExamineDesktops()
wlar=DesktopWidth(0)-300
whaut=DesktopHeight(0)-100
OpenWindow(#winmenu,0,0,wlar,whaut,"FTP test - (c) Omega - (OS: winXP et +, RAM>=1Go)", #PB_Window_ScreenCentered|#PB_Window_TitleBar |  #PB_Window_SystemMenu  |#PB_Window_SizeGadget |#PB_Window_TitleBar |#PB_Window_MinimizeGadget) 
If CreateGadgetList(WindowID(#winmenu))
   wrow=10
   Frame3DGadget(#frame1, 10, wrow, 540,120, "Informations de connection...", #PB_Frame3D_Flat)
   ;ButtonImageGadget(0,630,wrow,370,ImageHeight(0)-10,ImageID(0))
   wrow=wrow+20 
   TextGadget(#txtserveurftp,20, wrow, 150, 20, "SERVEUR FTP :")
   StringGadget(#serveurftp,180, wrow, 200, 20, "")
   ButtonGadget(#Connecter, 410, wrow-2, 100, 28,"Se connecter")
   ButtonGadget(#Initialiser,410, wrow+34, 100, 28,"Initialiser")
   ButtonGadget(#quitter, 410, wrow+68, 100, 28,"Quitter")
   wrow=wrow+22
   TextGadget(#txtUtilisateur,20, wrow, 150, 20, "UTILISATEUR :")
   StringGadget(#Utilisateur,180, wrow, 200, 20, "")
   wrow=wrow+22
   TextGadget(#txtMotDePasse,20, wrow, 150, 20, "MOT DE PASSE : ")
   StringGadget(#MotDePasse,180, wrow, 200, 20, "")
   wrow=wrow+22
   TextGadget(#txtRacineftp,20, wrow,150, 20, "REPERTOIRE RACINE :")
   StringGadget(#Racineftp,180, wrow, 200, 20, "public_html")
   wrow=wrow+50
   TextGadget(#txtCheminLocal,10, wrow, 120, 20, "DOSSIER LOCAL >>")
   StringGadget(#CheminLocal,125, wrow, 390, 20, "")
   ButtonGadget(#Parcourir,520,wrow-3,25,25,"...")
   TextGadget(#txtCheminFtp,630, wrow, 100, 20, "DOSSIER FTP >>")
   StringGadget(#CheminFtp,730, wrow, 230, 20, "")
   ButtonGadget(#RetourRacineFtp,975,wrow-3,25,25,"<<")
   wrow=wrow+30
   ListIconGadget(#gridlocal,10, wrow,540,250, "Fichiers (espace local)",400,#PB_ListIcon_GridLines )
   AddGadgetColumn(#gridlocal,1, "Type",100)
   ButtonGadget(#Envoyer,560,wrow+30,80,25,"Envoyer")
   ButtonGadget(#Supprimer,560,wrow+100,80,25,"Supprimer")
   ButtonGadget(#Telecharger,560,wrow+170,80,25,"Télécharger")
   ListIconGadget(#gridftp,630, wrow,370,250, "Fichiers (espace serveur ftp)",250,#PB_ListIcon_GridLines )
   AddGadgetColumn(#gridftp,1, "Type",100)
   wrow=wrow+260
   ProgressBarGadget(#pb,10,wrow,540,15,0,300)
   wrow=wrow+26
   TextGadget(#statut,10, wrow, 700, 20, "")
EndIf

GadgetToolTip(#Parcourir,"Sélectionnez un dossier/fichier...")
GadgetToolTip(#retourRacineFtp,"Revenir à la racine du serveur...")
GadgetToolTip(#Envoyer,"Transférer les fichiers vers le serveur ftp")
GadgetToolTip(#Telecharger,"Télécharger le fichier sélectionné")
GadgetToolTip(#Supprimer,"Supprimer le fichier sélectionné")
 
SetGadgetColor(#CheminLocal,#PB_Gadget_FrontColor,RGB(60, 51, 195))
SetGadgetColor(#CheminFtp,#PB_Gadget_FrontColor,RGB(60, 51, 195))
SetGadgetColor(#statut,#PB_Gadget_FrontColor,RGB(41, 42, 190))

SetGadgetColor(#gridftp,#PB_Gadget_FrontColor,RGB(124, 65, 158))
SetGadgetColor(#gridlocal,#PB_Gadget_FrontColor,RGB(24, 90, 169))

SetGadgetColor(#serveurftp,#PB_Gadget_FrontColor,RGB(82, 41, 143))
SetGadgetColor(#utilisateur,#PB_Gadget_FrontColor,RGB(82, 41, 143))
SetGadgetColor(#motdepasse,#PB_Gadget_FrontColor,RGB(82, 41, 143))
SetGadgetColor(#racineftp,#PB_Gadget_FrontColor,RGB(82, 41, 143))

If LoadFont(1, "Calibri", 10,#PB_Font_Bold) 
   SetGadgetFont(#gridftp, FontID(1)) 
EndIf

AddKeyboardShortcut(#Winmenu,#PB_Shortcut_Return,111) 

Repeat
EventId=WaitWindowEvent()

If EventID = #PB_Event_Menu 
   Select EventMenu() 
   Case 111 
   If  GetFocus_() = GadgetID(#CheminLocal)
       AfficherDossierlocal() 
   ElseIf  GetFocus_() = GadgetID(#serveurftp)
       SetFocus_(GadgetID(#utilisateur))
   ElseIf  GetFocus_() = GadgetID(#utilisateur)
       SetFocus_(GadgetID(#motdepasse))
   ElseIf  GetFocus_() = GadgetID(#motdepasse)
       SetFocus_(GadgetID(#racineftp))
   ElseIf  GetFocus_() = GadgetID(#racineftp)
       connecter() 
   EndIf    
   EndSelect
EndIf


If EventID = #PB_Event_Gadget
   Select EventGadget()

   Case #Connecter
         Connecter()
         
   Case #RetourRacineftp
         Connecter()

   Case #Parcourir
         CheminInitial$ = "C:\"   ; Répertoire par défaut qui sera affiché (une chaîne vide est aussi possible)
         Chemin$ = PathRequester("Choisissez un dossier", CheminInitial$)
         If Chemin$
            SetGadgetText(#CheminLocal,chemin$)
            AfficherDossierLocal()
         EndIf
    
   Case #gridftp
         wrow=GetGadgetState(#gridftp)
         If wrow>=0 And CountGadgetItems(#gridftp)>0
            fichier$=GetGadgetItemText(#gridftp,wrow,0)
            type$=GetGadgetItemText(#gridftp,wrow,1)
            If type$="Dossier"
               SetFTPDirectory(0,fichier$)
               SetGadgetText(#CheminFtp,fichier$)
               AfficherDossierFtp() 
            Else
               FichierFtp$=fichier$
            EndIf
         EndIf
   
   Case #gridlocal
         wrow=GetGadgetState(#gridlocal)
         If wrow>=0 And CountGadgetItems(#gridlocal)>0
            fichier$=GetGadgetItemText(#gridlocal,wrow,0)
            type$=GetGadgetItemText(#gridlocal,wrow,1)
            If type$="Dossier"
               SetGadgetText(#CheminLocal,fichier$+"\")
               AfficherDossierlocal() 
            Else
               fichierLocal$=fichier$
            EndIf
          EndIf

   Case #Envoyer
         If Len(fichierLocal$)>0
            Envoyer()
         EndIf
            
   Case #Telecharger
         If Len(fichierFtp$)>0
            Telecharger()
         EndIf

   Case #Supprimer
         If Len(fichierFtp$)>0
            Supprimer()
         EndIf

   Case #Quitter
         ExitMenu=1
         
   EndSelect
EndIf

If EventID=#PB_Event_CloseWindow
   ExitMenu=1
EndIf

Until ExitMenu=1
End
A+

Re: ReceiveFTPFile bloqué

Publié : lun. 14/nov./2016 13:37
par Ar-S
J'ai testé sous mon ftp 1&1 et ça fonctionne en 5.50 x86
Excepté les commandes Frame à modifier et le ClearGadgetItemList() et ClearGadgetList() obsolètes tout roule.
J'ai récupéré un zip sans soucis et j'ai bien les noms des fichiers dans le debug.

Mets à jour ton purebasic.
Depuis les années que tu t'en sers, n'as tu pas une version officielle ? Si non, il serait temps de franchir le pas. (c'est bientôt noel ;) )

Bon, mine de rien une ancienne version de PB devrait y arriver aussi.
N'as tu pas un parefeu ou antivirus qui pourrait bloquer ftp?

Re: ReceiveFTPFile bloqué

Publié : lun. 14/nov./2016 14:06
par JohnJohnsonSHERMAN
Chez moi ca fonctionne bien aussi :)

Re: ReceiveFTPFile bloqué

Publié : lun. 14/nov./2016 14:31
par omega
Oui, effectivement, c'est l'anti virus qui empêchait le téléchargement... Après désactivation provisoire, ça marche !
Mais pourquoi un antivirus bloque t-il les téléchargements? J'ai un avast que j'utilise depuis des années ...

Merci à vous tous pour votre aide

Re: ReceiveFTPFile bloqué

Publié : lun. 14/nov./2016 16:02
par Ar-S
Parce qu'avast c'est de la daube ?

Re: ReceiveFTPFile bloqué

Publié : lun. 14/nov./2016 18:15
par Zorro
Avast comme la plupart des anti virus propose de mettre en "exception" des fichiers (exe) ou des dossiers

commence par mettre tes dossiers concernant Purebasic en exception , (c'est a dire que ton antivirus n'agira pas sur ces dossiers )
mets aussi tes dossiers de travail (lieu ou tu poses tes *.pb et leur resultat compilés !!

de la sorte ton antivirus ne s'occupera plus de ce que tu fais avec Purebasic ... ;)