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

  FORUM HardWare.fr
  Programmation
  PHP

  "Enregistrer sous" un texte via "div"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

"Enregistrer sous" un texte via "div"

n°1915289
misterZida​ne
Posté le 14-08-2009 à 20:15:39  profilanswer
 

Bonjour à toutes et à tous !  :hello:  
Je ne pense pas qu'on peut faire ça qu'en PHP (heureusement) mais ça me suffirait déjà :)
J'ai un textarea ou un visiteur écris un message. J'aimerais lui permettre d'enregistrer ce message sous un fichier sur son ordinateur à l'aide d'un bouton sur lequel il pourra cliquer.
 
J'ai donc penser à écrire son fichier dans un fichier temporaire (mais là faudrait créer un fichier temporaire par visiteur...)
Savez-vous s'il y a un moyen simple de réaliser cette opération ?
 
D'avance, merci pour votre aide.

mood
Publicité
Posté le 14-08-2009 à 20:15:39  profilanswer
 

n°1915358
misterZida​ne
Posté le 15-08-2009 à 11:15:23  profilanswer
 

UP
Personne ne voit de solution ?

n°1915386
Pascal le ​nain
Posté le 15-08-2009 à 14:05:43  profilanswer
 

Tu peux générer un fichier texte, word, pdf ou n'importe quel format en php, mais tu ne peux pas obliger l'utilisateur à enregistrer ce fichier sur sa machine.
Sous quel format veux-tu exporter le contenu de ton textarea ?


Message édité par Pascal le nain le 15-08-2009 à 14:06:08
n°1915388
misterZida​ne
Posté le 15-08-2009 à 14:18:43  profilanswer
 

Merci d'avoir répondu,  
j'avais envi de l'exporter au format texte (je ne sais pas encore l'encodage, tant qu'il est lisible).
Je viens de voir qu'on pouvait forcer un téléchargement (ouvrir la boite de dialogue :http://php.developpez.com/faq/?page=fichiers_upload#fichiers_forcedownload)
Par contre si j'enregistre mon fichier (que j'aurais créé avec mes fputs), j'ai peur que ce même fichier soit partagé par tous les visiteurs, et a moins d'en créé bcp je ne vois pas d'autre solution,  
Tu saurais s'il y a une solution permettant d'éviter ce probleme ?
 
En tout cas merci

n°1915389
Pascal le ​nain
Posté le 15-08-2009 à 14:32:56  profilanswer
 

Non, ce n'est pas ainsi que ca fonctionne.
Le fichier texte généré n'est à aucun moment enregistré sur le serveur.
Quand tu clique sur ton bouton, tu appelles un fichier php.
Ce fichier php te génère à la volée un fichier du type de ton choix et te l'envoi directement.
Ce ficher créé à la volée est le fruit de l'exécution du fichier php pour et uniquement pour ton visiteur.
 
Un autre visiteur qui cliquera sur ce bouton verra son texte généré en fichier texte, et à aucun moment celui d'un autre.
IL faut bien comprendre que pour le serveur, les deux sessions sont complètement distincts et ne peuvent se partager de fichier.
 
Mais on ne peux même pas à proprement parler de fichier du coté serveur, puisque ce fichier en est un vraiment qu'une fois sur la machine du client. A aucun moment le fichier n'est enregistré sur le disque du serveur.
Pour le serveur, c'est simplement un buffer généré qu'il envoit par protocole http, et tout se passe dans sa mémoire Ram.
 
Sinon, tu ne peux pas forcer un téléchargement. Tu peux laisser interpréter le navigateurs, si c'est un format lisible par celui-ci. Dans un tel cas, ton ordi télécharge le fichier dans un dossier temporaire qui sera rapidement vidé. L'autre solution que tu as trouvé affiche la classique fenetre qui te propose d'ouvrir ou enregistrer vraiment le fichier dans un dossier non volatile, mais l'utilisateur peut très bien refuser le téléchargement.


Message édité par Pascal le nain le 15-08-2009 à 14:43:46
n°1915414
misterZida​ne
Posté le 15-08-2009 à 16:23:22  profilanswer
 

Merci bcp pour cet éclaircissement.
Je crois avoir tout compris sauf un détail.
 
Voilà comment je vois les étapes :
-Sur mon fichier php où il y a le textarea et le bouton ouvrant la boite de dialogue, le visiteur écris son texte puis clique sur ce bouton
 
- Normalement une fenêtre est censé s'ouvrir lui demandant où est ce que "le fichier généré à la volé" doit être sauvegardé. Puis après indication il l'enregistre ainsi sur son disque dur.
 
En ce qui concerne la boite de dialogue, je suppose qu'il faut utiliser les header (comme sur le lien que j'ai indiqué, à moins qu'il n'y ait un autre moyen).
Mais ce qu'il me manque c'est comment créer ce fichier à la volée.
Quel fonction ou script dois-je utiliser, car j'ai toujours pensé que fopen et fput permettaient de créer un fichier "sur le serveur" ?
 
En tout cas merci.

n°1915431
Pascal le ​nain
Posté le 15-08-2009 à 17:10:19  profilanswer
 

J'ai jamais fait ce genre de truc, mais je pense qu'il faut modifier les headers quand ton fichier est généré.
 
--- INUTILE EN FAIT ----
Changer le type mime tout d'abord :

header('Content-type: text/plain');

--- /INUTILE EN FAIT ----
 
Et obliger l'affichage de la fenetre de téléchargement :
 

header('Content-disposition: attachment');


 
Encore une fois, je dis ça au hasard, je ne l'ai jamais testé.
C'est très probable que ca ne fonctionne pas  :lol:


Message édité par Pascal le nain le 17-08-2009 à 12:02:13
n°1915678
Pascal le ​nain
Posté le 17-08-2009 à 11:58:53  profilanswer
 

J'ai testé pour toi, ca fonctionne bien.
Par contre le fichier téléchargé a toujours une extension en .php.
Tu peux bidouiller ca avec de l'url rewriting pour avec un nom de fichier en .txt
 
edit : il est inutile en fait de changer le type mime, car on demande un téléchargement en "attachment".


Message édité par Pascal le nain le 17-08-2009 à 12:00:46
n°1915700
stealth35
Posté le 17-08-2009 à 13:00:39  profilanswer
 

pour l'extention, il suffis de faire ainsi
 

header('Content-disposition: attachment; filename="monfichier.txt"');


Message édité par stealth35 le 17-08-2009 à 13:00:47
n°1915724
Pascal le ​nain
Posté le 17-08-2009 à 14:06:19  profilanswer
 

Merci  ;)

mood
Publicité
Posté le 17-08-2009 à 14:06:19  profilanswer
 

n°1915965
misterZida​ne
Posté le 17-08-2009 à 20:27:48  profilanswer
 

Merci bcp,
Je vais tester et vous tiens au courant

n°1915977
misterZida​ne
Posté le 17-08-2009 à 21:19:59  profilanswer
 

Ca marche parfaitement ! Merci...


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

  "Enregistrer sous" un texte via "div"

 

Sujets relatifs
[batch] Extraire valeur champ fichier texteLes éditeurs de texte en javascript pour Rails
formater du texte issu d'une base PHP Pattern Java | Probleme ecriture dans fichier texte.
[AS2] @ zone de texte sur flashEnregistrer une base de données access et gérer les erreurs
lecture/écriture fichier texte et conversion en données numériquesenregistrer une page generer par php en un fichier texte.ref
enregistrer une table dans un fichier texteEnregistrer des données dans un fichier texte ?
Plus de sujets relatifs à : "Enregistrer sous" un texte via "div"


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