Upload

Résolu/Fermé
Gardeboue Messages postés 49 Date d'inscription mardi 9 mai 2017 Statut Membre Dernière intervention 7 janvier 2019 - 29 janv. 2018 à 18:19
Gardeboue Messages postés 49 Date d'inscription mardi 9 mai 2017 Statut Membre Dernière intervention 7 janvier 2019 - 5 févr. 2018 à 18:16
Bonjour à tous,

Je poursuis la mise en place de mon formulaire d'échange de fichiers qui fonctionne bien grâce à la collaboration de yg_be et jordan45 qui m'ont déjà bien aidé.
Il me reste une dernière petite amélioration à apporter.
Concernant l'upload, lorsqu'un fichier de même nom existe dans le répertoire du serveur je sors du php en avertissant l'utilisateur que le fichier existe déjà et il click sur un lien pour retourner au formulaire. Je voudrais à ce moment là qu'il ait le choix de retourner au formulaire ou bien d'écraser le fichier existant.
Le problème c'est que si je relance le php tout le monde sait (même moi et c'est pas peu dire) que les variables sont partis au panier.

voilà le code partiel de l'endroit critique.
 //on regarde si le fichier existe déjà
  if(file_exists($filename))

 //Le fichier existe déjà
 {
 

echo "Le fichier ".$_FILES['fichier']['name']. " existe déjà dans le répertoire ".$dossier.".<br>";
echo "Vous devez auparavant effacer le fichier du serveur:".'<br>';
echo "Pour retourner au formulaire cliquez <a href=\"coffre-fort.php\">ici</a>".'<br><br>';
}
else
{

 //on stock le fichier dans le répertoire du serveur
 
 move_uploaded_file($_FILES['fichier']['tmp_name'], 'upload/'.basename($_FILES['fichier']['name']));

 echo "Le fichier ".$_FILES['fichier']['name']. " a été stocké sur le site".'<br>';
 echo "Il est dès à présent disponnible dans la liste des fichiers.".'<br>';
 echo "Pour retourner au formulaire, cliquez <a href=\"coffre-fort.php\">ici</a>";
 }


Le but serait soit de garder le principe des echo même si c'est pas très esthétique en complémentant les lignes 8/9/10 pour pouvoir soit sortir soit poursuivre le code pour effectuer la copie qui se fait en ligne 17 ou mieux encore d'avoir une boite de dialogue oui/nan je veux écraser....

Merci à tous


1 réponse

Gardeboue Messages postés 49 Date d'inscription mardi 9 mai 2017 Statut Membre Dernière intervention 7 janvier 2019
3 févr. 2018 à 15:37
bon étant seul au monde :-) je cherche du côté des $_session mais je n'arrive toujours pas à garder ma variable.
J'ai mis dans mon html:
<?php
session_start();

?>

J'ai modifié ma ligne input file:
<input type="file" name="fichier" /><br />


Par:
<input type="file" id="fichier" name="fichier" value="<?php if(isset($_SESSION['fichier'])) { echo htmlentities($_SESSION['fichier']);}?>"/><br />


Puis dons mon php j'ai donc mis en tête:

session_start();
$_SESSION['fichier']= $POST['fichier'];
$fichier     = (isset($_POST['fichier']));
$dossier = 'upload';

$fichier = $_FILES['fichier']['name'];
$filename = "$dossier/$fichier";


à la première execution du php la variable fichier est bien là mais à la deuxième execution la variable n'a pas été gardée.

Help me pliz
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
3 févr. 2018 à 20:43
bonsoir,
qu'appelles-tu "variable fichier"?
c'est, bien sûr, la variable
$_SESSION['fichier']
qui persiste d'une page à l'autre, ou d'une exécution à l'autre.
0
Gardeboue Messages postés 49 Date d'inscription mardi 9 mai 2017 Statut Membre Dernière intervention 7 janvier 2019
4 févr. 2018 à 16:12
oui mais pourquoi ne persiste t-elle pas justement
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > Gardeboue Messages postés 49 Date d'inscription mardi 9 mai 2017 Statut Membre Dernière intervention 7 janvier 2019
4 févr. 2018 à 17:21
que fais-tu avec la variable $_SESSION['fichier']? si j'en crois le code que tu as partagé, tu n'en fais rien.
0
Gardeboue Messages postés 49 Date d'inscription mardi 9 mai 2017 Statut Membre Dernière intervention 7 janvier 2019
4 févr. 2018 à 18:00
Je n'ai pas publié tout le code car le reste fonctionne bien, c'est juste la partie définition / récupération de la variable qui me pose problème.
La variable 'fichier' vient d'un champ de formulaire de type "file". Je récupère donc un nom de fichier avec son chemin que je vais uploader sur le serveur avec la fonction:
move_uploaded_file($_FILES['fichier']['tmp_name'], 'upload/'.basename($_FILES['fichier']['name']));

Si tu veux le code fonctionne très bien si le fichier n'existe pas déjà sur le serveur mais si il existe je sort avec un echo pour demander si on abandonne ou si on écrase le fichier existant.
Je fais çà:
echo "Le fichier ".$_FILES['fichier']['name']. " existe déjà dans le répertoire de stockage:".'<br>';
echo "Pour retourner au formulaire cliquez <a href=\"coffre-fort.php\">ici</a>".'<br><br>';
echo "Pour écraser le fichier existant, cliquez <a href=\"ecrase.php\">ici</a>";

Si il décide de continuer j'exécute ecrase.php qui est un condensé de mon 1er php où j'ai enlevé les divers test de poids-type etc.. qui ont déjà été exécuté et qu'on a pas besoin de refaire.
C'est dans ce php que je veux récupérer ma variable.
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
4 févr. 2018 à 18:18
que contient ecrase.php?
qu'y fais-tu pour récupérer la valeur de $_SESSION['fichier']?
0