Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| ftp | |
| | Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: ftp Sam 22 Juin 2013 - 20:09 | |
| @ Klaus, j' ai un message d' erreur sur la variable serveur$ (oui j' ai rajouté un "u" mais je l' ai fait dans l' appel aussi aurai je commis une horreur...heu...une erreur ? Autant pour moi ! c' est une erreur de mot de passe...avec tous ces codes je finis par me perdre... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 23 Juin 2013 - 1:16 | |
| Une petite question...( ou deux ) quand je récupère la liste des fichiers du dossier principale (racine) j' ai un "." sur la première ligne et deux sur la suivante. A quoi correspondent ils ? Si je les fais disparaître, cela pose t il un problème par la suite ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: ftp Dim 23 Juin 2013 - 1:47 | |
| Ces lignes avec des points représentent des pseudo-répertoires: - 1 seul point représente le dossier dans lequel on se trouve (comme .\ sous DOS) - 2 points représentent le dossier parent (comme ..\ sous DOS) Mais ceci pose problème par techniquement, il y a un détail que je n'ai pas su résoudre, si l'on clique sur un de ces liens. Je te conseille d'éliminer ces deux lignes et de les remplacer par une seule ligne "..", étant convenu qu'un clic sur cette ligne conduit vers le dossier parent qu'il faut alors spécifier explicitement. Regarde à ce sujet mon utilitaire avec lequel je mets mes sites web à jour: - Code:
-
' update_site_FTP.bas
labels() constantes() variables() environnement() form0() ecran()
end
sub labels() label close0, connecter, deconnecter, sortir label sel_server, mod_server, del_server, new_server label sel_dir, upload, add_file, rem_file label all_FTP_files, add_FTP_file, rem_FTP_file label download, changer_dest end_sub
sub constantes() dim KGF$ : KGF$ = "KGF.dll" dim ini$ : ini$ = "update_site_FTP.ini" end_sub
sub variables() dim dossier$, connecte%, home% dim no%, no1%, no2%, s$, i%, s1$, idx%, f%, n% dim no_server%, no_dir%, no_files%, no_FTP%, no_dest% end_sub
sub form0() full_space 0 caption 0,"Update site FTP" on_close 0,close0 no% = no% + 1 : main_menu no% : no1% = no% no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no% caption no%,"Fichier" no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Connecter" : on_click no%,connecter no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Déconnecter" : on_click no%,deconnecter no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"-" no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Sortir" : on_click no%,sortir
end_sub
sub ecran() no% = no% + 1 : container no% : no_server% = no% top no%,10 : left no%,10 : width no%,400 : height no%,180 caption no%,"Site FTP" no% = no% + 1 : combo no% : parent no%,no_server% : ' +1 top no%,20 : left no%,100 : width no%, 200 : on_click no%,sel_server no% = no% + 1 : dlist no% : ' +2 no% = no% + 1 : alpha no% : parent no%,no_server% top no%,50 : left no%,10 : caption no%,"Site FTP:" no% = no% + 1 : edit no% : parent no%,no_server% : ' +4 top no%,50 : left no%,100 : width no%,200 no% = no% + 1 : alpha no% : parent no%,no_server% top no%,80 : left no%,10 : caption no%,"Identifiant:" no% = no% + 1 : edit no% : parent no%,no_server% : ' +6 top no%,80 : left no%,100 : width no%,200 no% = no% + 1 : alpha no% : parent no%,no_server% top no%,110 : left no%,10 : caption no%,"Mot de passe:" no% = no% + 1 : edit no% : parent no%,no_server% : ' +8 top no%,110 : left no%,100 : width no%,200 no% = no% + 1 : button no% : parent no%,no_server% top no%,140 : left no%,100 : width no%,60 caption no%,"MàJ" : on_click no%,mod_server no% = no% + 1 : button no% : parent no%,no_server% top no%,140 : left no%,230 : width no%,30 caption no%,"-" : on_click no%,del_server no% = no% + 1 : button no% : parent no%,no_server% top no%,140 : left no%,270 : width no%,30 caption no%,"+" : on_click no%,new_server load_server() no% = no% + 1 : container no% : no_dir% = no% top no%,200 : left no%,10 : width no%,400 : height no%,180 caption no%,"Dossiers:" no% = no% + 1 : list no% : parent no%,no_dir% : ' +1 top no%,20 : left no%,10 : width no%,380 : height no%,150 on_click no%,sel_dir no% = no% + 1 : memo no% : hide no% : ' +2
no% = no% + 1 : container no% : no_files% = no% top no%,200 : left no%,510 : width no%,660 : height no%,180 caption no%,"Fichiers locaux:" no% = no% + 1 : list no% : parent no%,no_files% : ' +1 top no%,20 : left no%,10 : width no%,600 : height no%,150 no% = no% + 1 : open_dialog no% : ' +2 no% = no% + 1 : memo no% : hide no% : width no%,1000 : ' +3 no% = no% + 1 : button no% : parent no%,no_files% top no%,20 : left no%,620 : width no%,30 caption no%,"+" : on_click no%,add_file no% = no% + 1 : button no% : parent no%,no_files% top no%,60 : left no%,620 : width no%,30 caption no%,"-" : on_click no%,rem_file
no% = no% + 1 : button no% : top no%,230 : left no%,420 caption no%,"<<<<<" : on_click no%,upload
no% = no% + 1 : container no% : no_FTP% = no% top no%,390 : left no%,10 : width no%,660 : height no%,180 caption no%,"Fichiers FTP:" no% = no% + 1 : list no% : parent no%,no_FTP% : ' +1 top no%,20 : left no%,10 : width no%,600 : height no%,150 font_name no%,"Courier" no% = no% + 1 : button no% : parent no%,no_FTP% top no%,20 : left no%,620 : width no%,30 caption no%,"*" : on_click no%,all_FTP_files no% = no% + 1 : button no% : parent no%,no_FTP% top no%,60 : left no%,620 : width no%,30 caption no%,"+" : on_click no%,add_FTP_file no% = no% + 1 : button no% : parent no%,no_FTP% top no%,100 : left no%,620 : width no%,30 caption no%,"-" : on_click no%,rem_FTP_file
no% = no% + 1 : button no% : top no%,430 : left no%,680 caption no%,">>>>>" : on_click no%,download
no% = no% + 1 : container no% : no_dest% = no% top no%,390 : left no%,770 : width no%,400 : height no%,180 caption no%,"Dossier local:" no% = no% + 1 : list no% : parent no%,no_dest% : ' +1 top no%,40 : left no%,10 : width no%,380 : height no%,25 no% = no% + 1 : button no% : parent no%,no_dest% top no%,70 : left no%,150 caption no%,"Changer" : on_click no%,changer_dest
end_sub
sub environnement() KGF_initialize(KGF$) dossier$ = dir_current$ + "\" if file_exists(dossier$+ini$)=0 file_open_write 1,dossier$+ini$ file_writeln 1,"MonSite,MonServeur,MonID,MonMotDePasse" file_close 1 end_if end_sub
sub load_server() file_open_read 1,dossier$+ini$ while file_eof(1)=0 file_readln 1,s$ item_add no_server%+2,s$ KGFDelimitedTextExtract(s$,",",1) item_add no_server%+1,KGFDelimitedTextExtract$ end_while file_close 1 idx% = 1 SelectComboBoxItem(handle(no_server%+1),1) aff_server(item_read$(no_server%+2,item_index(no_server%+1))) end_sub
sub aff_server(s$) KGFDelimitedTextExtract(s$,",",2) text no_server%+4,KGFDelimitedTextExtract$ KGFDelimitedTextExtract(s$,",",3) text no_server%+6,KGFDelimitedTextExtract$ KGFDelimitedTextExtract(s$,",",4) text no_server%+8,KGFDelimitedTextExtract$ end_sub
close0: if variable("KGF_res%")=1 then dll_off return sel_server: idx% = item_index(no_server%+1) aff_server(item_read$(no_server%+2,idx%)) return
mod_server: s$ = text$(no_server%+1)+","+text$(no_server%+4)+","+text$(no_server%+6)+","+text$(no_server%+8) s1$ = text$(no_server%+1) item_delete no_server%+1,idx% item_delete no_server%+2,idx% item_insert no_server%+1,idx%,s1$ item_insert no_server%+2,idx%,s$ SelectComboBoxItem(handle(no_server%+1),idx%) aff_server(item_read$(no_server%+2,idx%)) file_save no_server%+2,dossier$+ini$ return
del_server: if message_confirmation_yes_no("Voulez-vous vraiment supprimer le serveur "+text$(no_server%+4)+" ?")=1 item_delete no_server%+1,idx% item_delete no_server%+2,idx% if count(no_server%+1)=0 item_add no_server%+1,"MonSite" item_add no_server%+2,"MonSite,MonServeur,MonID,MonMotDePasse" end_if if idx%>count(no_server%+1) then idx% = count(no_server%+1) SelectComboBoxItem(handle(no_server%+1),idx%) aff_server(item_read$(no_server%+2,idx%)) file_save no_server%+2,dossier$+ini$ end_if return
new_server: s$ = text$(no_server%+1)+","+text$(no_server%+4)+","+text$(no_server%+6)+","+text$(no_server%+8) item_add no_server%+1,text$(no_server%+1) item_add no_server%+2,s$ idx% = count(no_server%+1) SelectComboBoxItem(handle(no_server%+1),idx%) aff_server(item_read$(no_server%+2,idx%)) file_save no_server%+2,dossier$+ini$ return
connecter: if connecte%=1 then CloseFTP() IdentifyMyFTP(text$(no_server%+4),text$(no_server%+6),text$(no_server%+8)) OpenFTP(0) load_folders() connecte% = 1 return
sub load_folders() GetCurrentFolderFilesOnFTP(no_dir%+2) clear no_dir%+1 clear no_FTP%+1 home% = 0 item_add no_dir%+1,".." for i%=1 to count(no_dir%+2) s$ = item_read$(no_dir%+2,i%) f% = 1 if left$(s$,1)="." f% = 0 else if len(s$)>4 if mid$(s$,len(s$)-4,1)="." then f% = 0 end_if if len(s$)>3 if mid$(s$,len(s$)-3,1)="." then f% = 0 end_if if len(s$)>2 if mid$(s$,len(s$)-2,1)="." then f% = 0 end_if end_if if f%=1 item_add no_dir%+1,s$ else if left$(s$,1)<>"." then item_add no_FTP%+1,"[ ] "+s$ end_if if s$="index.html" then home% = 1 next i% if home%=1 then item_delete no_dir%+1,1 end_sub
sel_dir: s1$ = item_index$(no_dir%+1) ChangeFTPFolder(s1$) load_folders() GetActiveFTPDirectory() if home%=1 caption no_dir%,"Dossiers:" else caption no_dir%,"Dossiers: "+GetActiveFTPDirectory$ end_if return
deconnecter: if connecte%=1 CloseFTP() connecte% = 0 clear no_dir%+1 clear no_FTP%+1 caption no_dir%,"Dossiers:" end_if return sortir: if connecte%=1 message "Attention ! Vous êtes encore connecté !" return end_if terminate return upload: if connecte%=1 if count(no_files%+1)>0 n% = count(no_files%+1) for i%=1 to n% s$ = item_read$(no_files%+1,1) item_delete no_files%+1,1 display UploadFileToFTP(s$,1) next i% message "fini." end_if end_if return add_file: SelectFileToOpen("","",no_files%+3) if SelectFileToOpen=1 for i%=1 to count(no_files%+3) item_add no_files%+1,item_read$(no_files%+3,i%) next i% end_if return rem_file: if item_index(no_files%+1)>0 then item_delete no_files%+1,item_index(no_files%+1) return
all_FTP_files: if count(no_FTP%+1)=0 then return for i%=1 to count(no_FTP%+1) s$ = item_read$(no_FTP%+1,i%) if mid$(s$,5,2)<>".." item_delete no_FTP%+1,i% item_insert no_FTP%+1,i%,"[*] "+mid$(s$,5,len(s$)) end_if next i% return
add_FTP_file: if count(no_FTP%+1)=0 then return i% = item_index(no_FTP%+1) if i%=0 then return s$ = item_read$(no_FTP%+1,i%) if mid$(s$,5,2)<>".." item_delete no_FTP%+1,i% item_insert no_FTP%+1,i%,"[*] "+mid$(s$,5,len(s$)) end_if return
rem_FTP_file: if count(no_FTP%+1)=0 then return i% = item_index(no_FTP%+1) if i%=0 then return s$ = item_read$(no_FTP%+1,i%) if mid$(s$,5,2)<>".." item_delete no_FTP%+1,i% item_insert no_FTP%+1,i%,"[ ] "+mid$(s$,5,len(s$)) end_if return
download: if count(no_FTP%+1)=0 then return s1$ = item_read$(no_dest%+1,1) if s1$="" then return s1$ = s1$ + "\" for i%=1 to count(no_FTP%+1) s$ = item_read$(no_FTP%+1,i%) if left$(s$,3)="[*]" s$ = mid$(s$,5,len(s$)) if s$<>".." DownloadFileFromFTP(s$,s1$+s$,1) item_delete no_FTP%+1,i% item_insert no_FTP%+1,i%,"[ ] "+s$ end_if end_if next i% message "fini" return
changer_dest: FolderSelect(dossier$,1) if FolderSelect=1 clear no_dest%+1 item_add no_dest%+1,FolderSelect$ end_if return
#INCLUDE "KGF_SUB.bas"
[*] La procédure load_folders gère cela. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 23 Juin 2013 - 2:04 | |
| je vais regarder tout çà... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 23 Juin 2013 - 3:20 | |
| je me sers de GetActiveDirectory pour connaitre mon dossier racine mais j' ai droit à une chaîne vide... comment fais tu pour connaitre le dossier racine du site ? Edit :La chaîne vide venait d'un oubli de ma part dans l'initialisation de la variable dir$ J' ai trouvé un leurre pour les "." et "..", je charge les fichiers dans le mémo invisible et je reprends tout dans un list qui, lui, s'affiche. sauf que je démarre ma boucle de transfère à 3 pour le dossier principale et 2 pour les sous dossiers puis j'insère en première ligne ".../... " qui symbolise le retour au dossier parent pour les sous dossiers. Je suis loin de finir mon outils de maintenance mais j' y vais à pas pas pour d' abord maîtriser les fonctions ftp de KGF.dll avant de monter une "usine à gaz" comme disent certains . Pour la création des conteneurs html et le reste, ce n' est que beaucoup d' écritures et des crampes dans les doigts en perspective... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: ftp Dim 23 Juin 2013 - 9:01 | |
| Tu es sur la bonne voie... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 23 Juin 2013 - 13:17 | |
| Une petite remarque sur la fonction GetCurrentFolderFilesOnFTP()" . Dans bdr, les fonctions initialisaient le memo (clear) avant le chargement, c' était une bonne idée... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: ftp Dim 23 Juin 2013 - 22:03 | |
| Eh bien, c'est le cas aussi, pour cette fonction... regarde le source du programme posté ci-dessus: je ne suis pas obligé de faire un CLEAR du mémo avant le lancer cette fonction. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 27 Juin 2013 - 4:37 | |
| Une petite question avant une grande claque... La fonction download ou upload de la dll fonctionne-t-elle avec les dossiers ou seulement les fichiers ? Si je peux éviter quelques messages d' erreur... PS : je jongle entre les fonctions de création des pages *.htm et les fonctions du ftp, cela me permet de m' aérer les neurones . Là je viens de passer trois jours sur la page de la rubrique "Rechercher"...je pensais que cela serait assez simple...mais non pas tant que ça finalement. La partie html c'est rapide mais la modification des scripts est plus "hard". Promis ! dès que j' ai ou plutôt je pense avoir fini je mets les sources sur mon webdav. Avec les librairies KGF et OBJ, il y a actuellement 4600 lignes, cela se rapproche de ce que certains appellent "une usine à gaz" . | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: ftp Jeu 27 Juin 2013 - 10:19 | |
| FTP avec des dossiers ? J'essaierai. Je te tiendrai au courant... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 27 Juin 2013 - 14:13 | |
| A la vue de ta réponse, la fonction n' a pas été étudié pour. Ce n' est pas grave, je voulais en être sûr avant de me lancer dans des trucs impossibles. PS: Je suis sûr une fonction de synchronisation entre le dossier local et le dossier distant. Or l' affichage dans le "list" se fait sur le nom et pas sur la qualité ex : ( "fichier,fichier,dossier,fichier,dossier" et pas "dossier,dossier,fichier,fichier,fichier" ) donc je dois revoir mon affichage pour me simplifier les choses... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 27 Juin 2013 - 15:46 | |
| Juste une petite chose... Dans la gestion de la connexion au serveur, on a - Paramètres de connexion - Connexion - Déconnexion Je ne sais pas si tu l' as remarqué mais de temps en temps surtout si il n' y a pas eu d'action, la connexion se coupe. Si on lance une action alors que la liaison est coupé... bonjour les bugs... et les messages qui vont avec . Bref, te serait il possible d'ajouter une fonction "IsFtpOn" qui vérifie si il y a connexion ( ou pas ) avant de lancer une action ? ex : res%=dll_callx("IsFtpOn",........) if res%=0 action() else connexion() action() end_if | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: ftp Ven 28 Juin 2013 - 10:59 | |
| Les essais étant fait, je confirme: la fonction UPLOAD ne gère que des fichiers individuels, pas des dossiers entiers.
Je vais étudier la question de la fonction que tu suggères.
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 28 Juin 2013 - 13:15 | |
| Merci klaus,
La fonction que je te propose serait la bienvenue avec funpic. Je suis en train de coder la fonction de mise à jour complète ,j' ai réussi à coder le tour des fichiers avec la fonction "IsFileOnFTP" mais si j' ai une coupure de liaison avec le serveur dans mes deux boucles imbriquées...je ne te dis pas le massacre...les boucles ne s' arrêtent pas et les messages d'erreur se succèdent les uns aux autres.
Grâce à une telle fonction, je pourrai vérifier l' état de la connexion avant de lancer " IsFileOnFTP " et "UploadFile ToFTP" si le fichier est absent puis lancer un timer qui vérifie si la connexion est revenu et reprend les boucles ou sort de la sub au bout de quelques secondes si elle ne se rétablit pas. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 28 Juin 2013 - 19:59 | |
| Bon, monsieur pénible est de retours...
Si je comprends bien la fonction IsFileOnFTP quand res% renvoit 0 le fichier est présent sur le serveur quand res% renvoit 1 le fichier n' est pas sur le serveur
Pourquoi si je fais :
fic$="mon_fichier.dat"
res% = dll_call1("IsFileOnFTP",adr(fic$))
if res%=1 res2% = dll_call2("UploadFileToFTP",adr(fic$),1) end_if
l' instruction d' Upload est ignorée ?
Ou j' ai un problème dans ma boucle précédente qui ignore l' appel à la sub de vérif du dossier soit c' est Panoramic qui l' ignore... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 29 Juin 2013 - 21:06 | |
| Bon, toutes les fonctions fonctionnent... ...sauf si il y a coupure de connexion, et, dans ce cas, c' est le big bang du bug | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: ftp Dim 30 Juin 2013 - 1:57 | |
| J'ai ajouté une nouvelle fonction dans KGF.dll qui devrait résoudre ton problème: - Code:
-
res% = dll_call0("IsFTPOnline") Cette fonction retourne 0 si le lien FTP est rompu ou non établi, ou 1 si le lien FTP est valide. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 30 Juin 2013 - 4:15 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: ftp Dim 30 Juin 2013 - 22:00 | |
| Heureux d'avoir pu rendre service ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 1 Juil 2013 - 0:20 | |
| Cela fonctionne au poil ! J' ai un peu laissé de côté mon histoire de timer trop complexe en l' état actuel de mes connaissances. Cela demanderait des jours de testes et de bidouillages avec une collection d' erreur et j' aimerai que mon outil pour le mag soit rapidement utilisable. Ce qui sera possible, si un jour j' arrête de rajouter des trucs sur les pages de base. | |
| | | Contenu sponsorisé
| Sujet: Re: ftp | |
| |
| | | | ftp | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |