upload automatique d'un fichier csv sur un serveur

Petit nouveau ! | 6 Messages

05 oct. 2012, 14:31

Bonjour,
Je suis entrain de réaliser une appli web pour un loueur.
Cette appli va servir à une multitude d'agences.
Les agences utilisent un logiciel propre à leur activité qui intègre un planning d'occupation. Ce planning génère à chaque actualisation un fichier csv qui contient les catégories, les dates, le parc et le nombre de véhicules utilisés dans chaque catégorie.
Mon appli web utilise les données contenues dans ce fichier.
Il faudrait que pour chaque agence, au moment où elle se connecte, avec son ordi dans son agence, que le fichier CSV en question soit uploadé automatiquement sur le serveur hébergeant l'appli web.
Je voudrais utiliser cURL en simulant l'utilisation d'un formulaire de type multipart/form-data.
J'ai plus ou moins décripté le script cURL, mais je ne sais pas ce que doit contenir (car apparemment il en faut un) le script upload.php
Pourriez vous m'aider.
Cordialement
Terrysharp

Eléphant du PHP | 343 Messages

07 oct. 2012, 16:17

Un cron qui vérifie la dernière modif du fichier et un envoi par FTP (http://www.php.net/manual/fr/function.ftp-fput.php) peut peut-être marcher.
Aucune idée si ça marche.
Développeur web

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 oct. 2012, 16:39

Salut,


Si j'ai bien compris tu veux l'upload du fichier des agences vers le serveur central ?

As tu la main sur le logiciel utilisé dans les agences ?

Pour réaliser ton système tu as deux possibilitées.

Comme déjà indiqué le FTP :
Les agences déposes les fichiers dans un répertoire précis d'un compte FTP et derrière tu as un "démon" qui scrute le répertoire et traite les fichiers s'il y en a.
Ceci peux être fait avec une tâche cron ou une boucle infinie qui scrute le répertoire.

Sinon la version webservice. Un script php (que appel upload.php) qui permet l'upload d'un fichier et son traitement.

Dans les deux cas tu va devoir soit paramètrer le soft en agence pour utiliser FTP ou le script d'upload.
Soit créer un soft qui tournera sur la machine et le fera pour toi.

En aucun cas tu ne pourra le faire avec une page web ;)



@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 6 Messages

09 oct. 2012, 10:36

Bonjour et merci pour vos réponses.
En effet, pour le fonctionnement de mon appli web j'ai besoin de récupérer un fichier .csv qui se trouve dans un répertoire du pc de l'agence.
Ce fichier est généré par une appli windows type planning. Je n'ai pas la main sur le soft. Les développeurs de l'appli planning
ont justement ajouté la génération de ce fichier .csv stocké dans un rep pour le fonctionnement de mon appli web.
Les agences déposes les fichiers dans un répertoire précis d'un compte FTP
Le fichier est déposé dans un répertoire de type c:/REPCSV en local, dans ton explication il faudrait que le fichier soit directement déposé dans un rep sur le serveur.
Je ne pense pas que la SSII soit enclain à rajouter des lignes de code pour celà.
@+
Thierry

ViPHP
ViPHP | 2577 Messages

09 oct. 2012, 14:00

Tu peux faire une tache programmée sur les postes clients qui envoie le fichier sur le serveur via ftp.

fichier de commande :
ftp -s:put.txt ftp.domaine.com

fichier put.txt :
MonUser
MonMotDePasse
put toto.txt titi.txt

Le fichier de commande peux inclure une sauvegarde du fichier à transmettre et un controle d'existence. J'utilise ca avec windows XP.

Petit nouveau ! | 6 Messages

10 oct. 2012, 08:43

Bonjour,
Pas mal l'idée !
A ce moment là, je peux envoyer le fichier d'une agence X dans un répertoire X sur le serveur et le fichier de l'agence Y dans un répertoire Y et ainsi de suite, car à terme il est possible que plus de 300 agences adoptent le système et chaque agence a son propre planning.
Est il possible, en tâche planifiée, de supprimer le fichier une fois envoyé ?
Merci pour ton aide.
Thierry

ViPHP
ViPHP | 2577 Messages

10 oct. 2012, 09:32

La tache planifiée permet de lancer un script. Tu peux mettre ce que tu veux dans le script.

Un truc simple après le transfert et de sauvegarder le fichier en ajoutant une partie de la date dans le nom. tu peux par exemple sauvegarder le fichier en l'appelant lundi.csv, mardi.csv... et avoir ainsi toujours les derniers fichiers sur une semaine au cas ou.

Petit nouveau ! | 6 Messages

11 oct. 2012, 09:00

Bonjour,
Le problème, d'après ce que j'ai pu voir avec les tâches plannifiées, c'est que tu ne peut la lancer qu'une fois par jour à heure fixe.
Moi j'aurais besoin d'uploader mon fichier à chaque modification du planning.
Je pensai à la base qu'il existait une solution avec cURL qui permet de simuler l'utilisation d'un formulaire type multipart/form-data
@+
Thierry

ViPHP
xTG
ViPHP | 7331 Messages

11 oct. 2012, 13:10

Le problème c'est que tu n'as pas accès au code créant le CSV d'après ce que je comprends.
Donc tu ne peux savoir quand un fichier est créé ou mis à jour à l'instant t.
Le plus proche serait comme précédemment dit de lancer une tâche qui scrute en continu le répertoire à la recherche de changement de date de modification ou de création de fichier.
Sinon tâche planifiée qui se lance à une intervalle de temps raisonnable pour le traitement en aval.