Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
832 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Ecrire dans un fichier sur un client

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ecrire dans un fichier sur un client

n°1172147
4bis
Posté le 08-08-2005 à 10:16:51  profilanswer
 

Bonjour a tous,
 
J'aimerais pouvoir écrire dans un fichier csv directement sur l'ordinateur du client, et non sur le serveur.  
 
Pour l'instant, j'ai crée mon fichier csv sur le serveur sans problèmes, mais étant donné que ce fichier sera généré par plusieurs clients et contiendra des données différentes, j'aimerais écrire directement les données sur un fichier csv sur le client.  
 
Je pensais demander au client où il veut placer son fichier sur le disque dur (disons c:\temp), puis créer ce fichier en y intégrant les données. Seulement, je n'arrive pas du tout à créer un quelconque fichier sur le client.
 
Si vous savez comment faire, je suis preneur, ou si une autre méthode, meilleure, je le suis aussi. :)

mood
Publicité
Posté le 08-08-2005 à 10:16:51  profilanswer
 

n°1172152
gatsusat
Posté le 08-08-2005 à 10:19:52  profilanswer
 

tu peux pas écrire de fichier sur le poste client
et encore heureux sinon ca serait une magnifique falle de securité

n°1172167
dotfx
Posté le 08-08-2005 à 10:31:26  profilanswer
 

Tu as deux possibilités:
- Java
- ActiveX
 
Pour le 1er je ne peux pas t'aider, pour le second, c'est un simple JavaScript qui appelle un objet ActiveX, mais uniquement disponible avec Internet Explorer, avec toutes les contraintes de sécurité que ça ammène (si le client a désactivé l'execution d'ActiveX, et j'espère qu'il l'a fait! alors tu pourras rien faire)
 

Code :
  1. <script type="text/javascript">
  2.   <!--
  3.     function WriteFile() {
  4.       var obj = new ActiveXObject("Scripting.FileSystemObject" );
  5.       var file = obj.OpenTextFile("C:\\fichier.txt" , 8);
  6.       file.writeline("On écrit une ligne à la fin du fichier" );
  7.       file.Close();
  8.     }
  9.   -->
  10. </script>


 
C'est effectivement une magnifique faille de sécurité Gatsusat! Merci Microsoft!


Message édité par dotfx le 08-08-2005 à 10:32:45

---------------
www.renderfarm.online
n°1172171
4bis
Posté le 08-08-2005 à 10:33:07  profilanswer
 

Je sais, mais je me disais que peut etre avec l'accord du client on pouvait le faire. :??:
 
Sinon, l'autre solution serait, lorsque la personne choisit l'emplacement et cliques sur ok, de générer le fichier et de le supprimer par la site, mais comment voir si le telechargement est terminé ou non ?

n°1172178
4bis
Posté le 08-08-2005 à 10:37:43  profilanswer
 

dotfx a écrit :

Tu as deux possibilités:
- Java
- ActiveX
 
Pour le 1er je ne peux pas t'aider, pour le second, c'est un simple JavaScript qui appelle un objet ActiveX, mais uniquement disponible avec Internet Explorer, avec toutes les contraintes de sécurité que ça ammène (si le client a désactivé l'execution d'ActiveX, et j'espère qu'il l'a fait! alors tu pourras rien faire)
 

Code :
  1. <script type="text/javascript">
  2.   <!--
  3.     function WriteFile() {
  4.       var obj = new ActiveXObject("Scripting.FileSystemObject" );
  5.       var file = obj.OpenTextFile("C:\\fichier.txt" , 8);
  6.       file.writeline("On écrit une ligne à la fin du fichier" );
  7.       file.Close();
  8.     }
  9.   -->
  10. </script>


 
C'est effectivement une magnifique faille de sécurité Gatsusat! Merci Microsoft!


 
Merci pour cela, mais effectivement, je suis dans une entreprise, et l'execution d'active x a été désactivée par defaut. :/

n°1172199
dotfx
Posté le 08-08-2005 à 10:51:11  profilanswer
 

Si c'est un réseau local, il serait plus sûr et interessant de créer un répertoire partagé avec certains droits, et qu'un script accède à ce répertoire (par ex \\machine\répertoire\fichier.csv) toutes les X minutes (cron? Perl?), sans que l'utilisateur n'ait à utiliser un navigateur. À moins que l'utilisation de celui-ci soit justifié.


Message édité par dotfx le 08-08-2005 à 10:59:50

---------------
www.renderfarm.online
n°1172212
4bis
Posté le 08-08-2005 à 11:04:00  profilanswer
 

dotfx a écrit :

Si c'est un réseau local, il serait plus sûr et interessant de créer un répertoire partagé avec certains droits, et qu'un script accède à ce répertoire (par ex \\machine\répertoire\fichier.csv) toutes les X minutes (cron? Perl?), sans que l'utilisateur n'ait à utiliser un navigateur. À moins que l'utilisation de celui-ci soit justifié.


 
En fait, le fichier peut etre crée par tous les utilisateurs de l'entreprise (environ 1000), et chaque fichier pourra être différent suivant ce que la personne souhaite. Donc créer un répertoire unique, je ne pense pas que ce soit la bonne solution. :/

n°1172216
dotfx
Posté le 08-08-2005 à 11:11:12  profilanswer
 

Est-ce vraiment nécessaire d'écrire sur le poste client? Tu peux pas tout centraliser sur une machine, où les fichiers sont l'IP et/ou nom d'utilisateur, ou mieux encore une bdd MySQL par exemple?
 
Si oui, je suis sûr que sur le forum Java qqun pourra te renseigner pour faire un petit applet qui pourra écrire ces fichiers sur le poste client. Là encore, il faut que Java soit activé et installé sur les machines.


---------------
www.renderfarm.online
n°1172285
afbilou
pouet your life
Posté le 08-08-2005 à 12:13:31  profilanswer
 

La solution est de générer ton fichier csv et de le faire télécharger par le client tout betement en utilisant un lien cliquable ou un bouton.

n°1172293
onizuka_se​nsei
Posté le 08-08-2005 à 12:25:09  profilanswer
 

ou en faisant une redirection et en modifiant directement le header, comme ça pas besoin de lien :)


Message édité par onizuka_sensei le 08-08-2005 à 12:25:24
mood
Publicité
Posté le 08-08-2005 à 12:25:09  profilanswer
 

n°1172294
4bis
Posté le 08-08-2005 à 12:25:32  profilanswer
 

afbilou a écrit :

La solution est de générer ton fichier csv et de le faire télécharger par le client tout betement en utilisant un lien cliquable ou un bouton.


 
Oui c'est ce que je disais plus haut ;) Seulement, j'aimerais pouvoir le supprimer après qu'il l'ait telechargé (c'est la solution que j'ai pris, mais je n'ai pas reussi a faire en sorte de supprimer le fichier).
 
En fait, ce n'est pas vraiment necessaire, c'etait pour ne psa générer plusieurs fichiers sur le serveur (car il n'a pas un espace disque alloué énorme, donc je ne voulais pas faire ca, pour ne pas satuer le disque du serveur).
 
Et l'emploi d'une bdd Mysql, c'est non, vu que je n'en utilises pas, et ce serait dommage d'en créer une juste pour cette fonctionnalité.

n°1172317
ratibus
Posté le 08-08-2005 à 12:58:40  profilanswer
 

Tu peux faire un script qui va purger régulièrement le répertoire où tu as généré tes fichiers à télécharger ;)

n°1172339
afbilou
pouet your life
Posté le 08-08-2005 à 13:33:02  profilanswer
 

Je crois que tu t'y prends mal !

Code :
  1. <?php
  2. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  3. header('Content-Type: application/octet-stream');
  4. header('Content-Disposition: attachment; filename=truc.txt');
  5. echo 'Je génére les données CVS avec des echos :D',"\n";
  6. echo 'Je génére les données CVS avec des echos :D',"\n";
  7. echo 'Je génére les données CVS avec des echos :D',"\n";
  8. echo 'Je génére les données CVS avec des echos :D',"\n";
  9. echo 'Je génére les données CVS avec des echos :D',"\n";
  10. echo 'Je génére les données CVS avec des echos :D',"\n";
  11. echo 'Je génére les données CVS avec des echos :D',"\n";
  12. echo 'Je génére les données CVS avec des echos :D',"\n";
  13. echo 'Je génére les données CVS avec des echos :D',"\n";
  14. echo 'Je génére les données CVS avec des echos :D',"\n";
  15. echo 'Je génére les données CVS avec des echos :D',"\n";
  16. echo 'Je génére les données CVS avec des echos :D',"\n";
  17. ?>


Le header('Content-Disposition: attachment; filename=truc.txt'); specifie que le fichier que va telecharger le client s'appellera truc.txt par defaut ! Il pourra le changer dans la boite de dialogue de telechargement evidemment !
Coté serveur tu ne crées pas de fichier justement avec cette methode ! Pour que le client recoive le fichier il suffit de faire un lien tout bete vers le script en question.

n°1172507
4bis
Posté le 08-08-2005 à 15:33:32  profilanswer
 

afbilou a écrit :

Je crois que tu t'y prends mal !

Code :
  1. <?php
  2. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  3. header('Content-Type: application/octet-stream');
  4. header('Content-Disposition: attachment; filename=truc.txt');
  5. echo 'Je génére les données CVS avec des echos :D',"\n";
  6. echo 'Je génére les données CVS avec des echos :D',"\n";
  7. echo 'Je génére les données CVS avec des echos :D',"\n";
  8. echo 'Je génére les données CVS avec des echos :D',"\n";
  9. echo 'Je génére les données CVS avec des echos :D',"\n";
  10. echo 'Je génére les données CVS avec des echos :D',"\n";
  11. echo 'Je génére les données CVS avec des echos :D',"\n";
  12. echo 'Je génére les données CVS avec des echos :D',"\n";
  13. echo 'Je génére les données CVS avec des echos :D',"\n";
  14. echo 'Je génére les données CVS avec des echos :D',"\n";
  15. echo 'Je génére les données CVS avec des echos :D',"\n";
  16. echo 'Je génére les données CVS avec des echos :D',"\n";
  17. ?>


Le header('Content-Disposition: attachment; filename=truc.txt'); specifie que le fichier que va telecharger le client s'appellera truc.txt par defaut ! Il pourra le changer dans la boite de dialogue de telechargement evidemment !
Coté serveur tu ne crées pas de fichier justement avec cette methode ! Pour que le client recoive le fichier il suffit de faire un lien tout bete vers le script en question.


 
 
Ah nikel, ca marche. Par contre, comment faire pour que le navigateur (ie entre autres) n'interpretes pas le fichier csv et l'affiche directement. J'aimerais plutot une invite de commandes pour enregistrer le fichier csv ?

n°1172566
afbilou
pouet your life
Posté le 08-08-2005 à 16:10:22  profilanswer
 

Pardon ? Tu ne souhaites plus qu'il soit proposé au client de telecharger le fichier cvs généré ?

n°1172571
4bis
Posté le 08-08-2005 à 16:12:29  profilanswer
 

afbilou a écrit :

Pardon ? Tu ne souhaites plus qu'il soit proposé au client de telecharger le fichier cvs généré ?


 
Si justement, je voudrais que le client puisses telecharger le fichier cvs, hors, la pour l'instant, le fichier s'ouvre directement sur une nouvelle page sur internet explorer.

n°1172575
4bis
Posté le 08-08-2005 à 16:13:59  profilanswer
 

Desole, c'est bon, j'avais fait une erreur dans mon lien en mettant "target="_blank", je l'ai supprimé et ta solution marche tres bien.  
 
Merci.  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Ecrire dans un fichier sur un client

 

Sujets relatifs
[WebServices/SOAP] Serveur php NuSOAP / Client JAVA/JSPComment écrire en notation scientifique ?
imprimer un fichier distantRécupérer le nom de session windows du client dans un réseau local
un code a modifier... listage fichier[php] Ecrire dans un fichier lancer par un header !
Impossible d'ouvrir un fichier s'il est inclus dans une archive .jarvirer/reduire le fichier idbdata1 (MySQL)
[JS] écrire dans un fichier côté client ?[PHP] Ecrire un fichier sur le disque dur du client...
Plus de sujets relatifs à : Ecrire dans un fichier sur un client


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR