Rechercher : dans
Par :

PHP/HTML

Dernière réponse le 28 jui 2008 à 17:58:44 AMichel, le 30 jui 2002 à 09:42:27 
 Signaler ce message aux modérateurs

Salut,
Je travaille sur un intranet et je souhaite faire apparaitre une boite de dialogue style "Enregistrer sous" et je ne sais pas comment faire. J'ai réussi a ouvrir une boite du style 'ouvrir' en utilisant :"input file" et ca marche tres bien mais je ne trouve rien pour "Enregistrer sous".
Toutes vos idees seront les bienvenues.
Merci d'avance.

Meilleures réponses pour « PHP/HTML » dans :
[PHP] Détecter la résolution d'affichage VoirPHP ne fournit pas de fonction permettant la détection de la résolution d'affichage car l'information concernant l'affichage du visiteur n'est pas fournie nativement par le protocole HTTP. Javascript par contre permet de détecter la résolution...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Implantation du code Php VoirL'interprétation du code par le serveur Un script PHP est un simple fichier texte contenant des instructions écrites à l'aide de caractères ASCII 7 bits (des caractères non accentués) incluses dans un code HTML à l'aide de balises spéciales et...
PHP - Affichage de texte sur le navigateur VoirLe but de PHP est de permettre la création de pages web dynamiques, ainsi son but premier est de pouvoir envoyer des données au navigateur. Les trois fonctions standards PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces...

1

Niko, le 30 jui 2002 à 11:27:49

Qu'est ce que tu veux enregistrer ?
Je suppose que c'est un fichier mais dis m'en un peu plus....

Répondre à Niko

2

AMichel, le 30 jui 2002 à 11:55:02

Oui il s'agit d'un fichier. Je fais une requete SQL et je cree un fichier '.csv' , je veux pouvoir choisir le repertoire dans lequel j'irai stocker le fichier et avoir la possibilité de donner un nom a ce nouveau fichier. Si tu as besoin de plus d'infos je suis a ta disposition.

Répondre à AMichel

3

Vegeta, le 30 jui 2002 à 14:57:39

Il faut utiliser les header HTTP, par exemple tu mets le code suivant en haut du fichier :

//------//
if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
} elseif (!empty($_SERVER['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
}

if (eregi('MSIE[[:space:]]+[0-9]+\.[0-9]+', $HTTP_USER_AGENT)) { //if browser is IE compatible
header('Content-Type: application/octetstream');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else { //if browser is not IE compatible
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Expires: 0');
header('Pragma: no-cache');
}
//------//


a+

Répondre à Vegeta

4

Vegeta, le 30 jui 2002 à 15:03:39
  • +1

Il faut avant ce code que tu définisses la variable $filename (le nom du fichier), exemple d'utilisation de ce code:

<?php
$filename = 'test.txt';

if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
} elseif (!empty($_SERVER['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
}

if (eregi('MSIE[[:space:]]+[0-9]+\.[0-9]+', $HTTP_USER_AGENT)) { //if browser is IE compatible
header('Content-Type: application/octetstream');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else { //if browser is not IE compatible
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Expires: 0');
header('Pragma: no-cache');
}
?>

contenu du fichier

Répondre à Vegeta

5

AMichel, le 30 jui 2002 à 16:53:08

Merci pour ton code mais j'ai un peu de mal a comprendre!
J'ai testé ton code mais je dois mal l'utiliser.

Reprenons au debut:
Lorsque ma page est affichée je donne ds ma ligne 'input type=text' value=le chemin par defaut ex: c:/repert1/sousrepert2
puis ds une autre ligne 'input type=text' value='nomfichier'
Je voudrais, en cliquant sur un bouton que la boite de dialogue "Enregistrer sous" s'ouvre, que l'on recherche ds l'arborescence le nouveau chemin du repertoire ex:d:/repert2/ssrepert4/ et modifier le nom du fichier si on le souhaite puis apres avoir clique sur enregistrer, on retrouve ds les deux lignes les nouvelles valeurs( comme cela se fait ss windows en faisant fichier enreg ss).

votre code fait il cela?

Répondre à AMichel

6

Vegeta, le 30 jui 2002 à 22:28:01

Le code que je t'ai donné permet de "dire" au navigateur du visiteur que la page doit être considéré comme un fichier à enregistrer sur le disque dur, il y a donc une fenêtre qui s'ouvre et qui permet d'enregistrer le fichier sur le disque dur (enregistrer sous), cette fenêtre ne peut pas être modifiée.

Ce code doit être placé tout en haut de la page avant tout le reste.

J'éspère que ça t'aidera.

Répondre à Vegeta

7

AMichel, le 1 aoû 2002 à 11:05:11

J'ai placé ton code en debut de programme mais j'obtiens des messages 'warning : cannot add header information'
puis ma page s'affiche comme avant.

Que puis je faire?

Répondre à AMichel

8

Vegeta, le 1 aoû 2002 à 21:08:07

Si tu as ce message c'est que le code n'est pas tout à fait au début, il ne faut pas qu'il y ait le moindre espace avant le <?php au début.

Répondre à Vegeta

9

Vegeta, le 1 aoû 2002 à 22:34:03

Si tu veux je t'envoie un fichier pour te montrer sur ton mail

Répondre à Vegeta

10

AMichel, le 5 aoû 2002 à 12:01:55

Super, grace a toi, j'ai pu enfin ouvrir cette fenetre.
Il me reste qqes petits points noirs à solutionner, veux-tu continuer à m'aider?

J'ai mis ton code ds un pgm a part que j'appelle en cliquant sur un bouton de formulaire.
1) Mon appli s'arrete complètement pour ouvrir cette fenetre au lieu de la laisser active pour que je puisse ensuite clicquer sur valider en fin de selection et enchainer sur d'autres pages?
2) le fenetre qui s'ouvre c'est "téléchargement de fichier" puis "enregistrer sous" peut on éviter la premiere?

Je veux bien voir ton fichier, cela me donnera une idée.

Encore merci.

Répondre à AMichel

11

Vegeta, le 5 aoû 2002 à 15:46:16

Salut,

on ne peut pas changer les fenêtres qui s'ouvrent par cette technique, car ce sont les mêmes que celles qui s'ouvrent pout télécharger un fichier "normal" et elle sont définies par IE.

Pour ouvrir le fichier dans une nouvelle fenêtre à partir d'un lien il faut que tu mettes target="_blank" dans la balise <a>.

J'ai mis un fichier d'exemple sur mon serveur, voilà l'adresse : http://thomas.chaumeny.free.fr/exemple.zip

a+

Répondre à Vegeta

12

AMichel, le 7 aoû 2002 à 16:34:16

J'ai testé ton "exemple".php". J'ai fais comme toi mais je rencontre des difficultés car je n'arrive pas a integrer ce code dans mes programmes.
Pour éviter de passer par le forum et pour etre plus reactif, puis-je te contacter directement par téléphone? si cela ne te dérange pas ou bien directement par mails?
Sinon, je tévoquerai mes pbs aprés avoir eu ta réponse.
A+

Répondre à AMichel

13

 masternico, le 28 jui 2008 à 17:58:44

Salut tout le monde...
Votre méthode est pas mal, mais présente un gros gros problème de sécurité. Je m'explique:

grâce à ce script, il est possible de forcer le téléchargement d'un fichier depuis le serveur... c'est cool, mais que se passe t-il si je fait un appel direct à la page en mettant à la main un nom de fichier php qui m'interesse. Ex: download_file.php?file_name=index.php
Et bien je reçoit le code source php. Dès lors, je le décortique, et je télécharge les fichiers de configuration de la connexion à la BDD et là j'ouvre la porte en grand...

Répondre à masternico
Collection CommentÇaMarche.net