Partage
  • Partager sur Facebook
  • Partager sur Twitter

Uploader une image via bouton "parcourir"

20 décembre 2016 à 15:02:15

Bonjour,

Je viens à vous car j'ai besoin d'aide, après plusieurs recherches et test je n'arrive toujours pas à upload une photo sur mon site via un bouton "parcourir" (pour un formulaire) plutôt qu'en passant par PhpMyAdmin qui rend la chose moins optimisé, surtout pour des personnes ne travaillant pas en informatique et qui ont besoin d'upload des photos sur le site.

Le principe étant d'ajouter la photo via phpmyAdmin avec le nom de la personne concernée comme nom d'image pour que celle-ci apparaisse dans un formulaire (qui est destiné à l'impression) via ce code :

<?php
<input type="hidden" name="photo" value="<?php echo $photo?>">
<img src="./images/im_aprs/<?php echo $photo?>" alt="Smiley face" height="82" width="72"></br></br>
?>

La photo n'est pas visible dans le formulaire de modification puisqu'elle n'est pas updoader via le site mais via PhpMyAdmin, j'aimerai donc que la photo puisse être uploader via le formulaire de modification ce qui rendrait la chose plus simple.

Ps : Le site est codé avec le système MVC (Model View Controller)

Ps 2: Cet input n’enregistre pas la photo et permet seulement de changer l'image temporairement le temps de l'impression mais ce n'est pas jouable sur le long terme

Merci d'avance pour votre aide

-
Edité par Melvin-F 20 décembre 2016 à 15:04:28

  • Partager sur Facebook
  • Partager sur Twitter
20 décembre 2016 à 15:08:09

tu as oublié la virgule apres $photo
  • Partager sur Facebook
  • Partager sur Twitter
20 décembre 2016 à 16:04:26

Merci de ta réponse mais ce n'est pas ma question, j'aimerais pouvoir enregistrer la photo mais ce code là ne fait qu'afficher des photos déjà enregistrées via PhpMyAdmin
  • Partager sur Facebook
  • Partager sur Twitter
20 décembre 2016 à 17:05:47

Hello,

Un formulaire avec un input type text fait bien apparaître le bouton "parcourir" et permet d'uploader immédiatement le fichier sélectionné.
Ce fichier est stocké sur le serveur dans un dossier "tmp" inaccessible par FTP, il faut donc ensuite le déplacer vers un répertoire du site.

1 Le formulaire d'upload:

<form ENCTYPE="multipart/form-data" name="leform_upload" method="post" action="mapage.php&action=upload">
<input type="file" name="mon_fichier">
<input type="submit" value="uploader le fichier">
</form>

Quand un fichier est sélectionné, submit va envoyer le fichier sur le sevreur, dans me répertoire "tmp" où généralement il est effacé par le serveur au bout d'une journée.

Le script qui permet de déplacer le fichier après l'upload, au début de la page mapage.php, cible du formulaire :

<?php
switch ($_GET['action']) {
	case 'upload':
		$root = $_SERVER['DOCUMENT_ROOT'] . '/';
		$repertoire_upload_absolu 	= $root . 'uploads/';
		$stream = ftp_connect($ftp_serveur);
		$log = ftp_login ($stream,$ftp_login,$ftp_passe);
		$the_name = $_FILES['mon_fichier']['name'];
		move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire_upload_absolu.$the_name);
		ftp_close ($stream);
	break;
}
?>

Remarques :
Il faut bien entendu affecter les variables $ftp avec les paramètres de connexion FTP du site,
dans cet exemple, le répertoire d'upload est au premier niveau du site (comme le formulaire et sa page) et s'appelle 'uploads'.

On peut dans le script, avant le déplacement (move_uploaded_file), changer le nom, vérifier la taille, le poids, l'extension, etc.


-
Edité par ChrisLebure 20 décembre 2016 à 17:19:12

  • Partager sur Facebook
  • Partager sur Twitter
21 décembre 2016 à 9:08:56

Bonjour et merci pour ta réponse,

Mon site est hébergé en local, faut-il donc ignorer la partie de connexion au FTP ou faut-il la remplacer par autre chose ?

Je vais aussi te préciser des informations qui sont peut être essentielles car je me suis mal exprimé, en fait ce nom les noms des photos qui sont enregistrés dans la base de données stockée sur PhpMyAdmin, ensuite on place la photo dans un répertoire et avec ça : 

<img src="./images/im_aprs/<?php echo $photo?>" alt="Smiley face" height="82" width="72"></br></br>

On peut afficher la photo grâce à cette variable qui contient le nom des photos dans PhpMyAdmin. J'aimerais donc que l'utilisateur puisse ajouter la photo via un bouton "parcourir" ce qui ajouterai le nom dans la base de donnée et qui afficherait cette photo.

J'espère que c'est un peu plus clair,

Merci d'avance

-
Edité par Melvin-F 21 décembre 2016 à 9:34:14

  • Partager sur Facebook
  • Partager sur Twitter
21 décembre 2016 à 10:28:43

Oui pas de problème pour un upload en local, j'ai testé avec MAMP, tout est bon,
pas besoin de connexion FTP donc. 

J'en profite pour te redonner les codes, il y a des erreurs de frappe

<form ENCTYPE="multipart/form-data" name="leform_upload" method="post" action="index.php?action=upload">
<input type="file" name="mon_fichier">
<input type="submit" value="uploader le fichier">
</form>

et le script PHP pour un upload local : 

<?php
echo 'DOCUMENT_ROOT : ' . $_SERVER['DOCUMENT_ROOT'] . '<br />';
switch ($_GET['action']) {
    case 'upload':
        $root = $_SERVER['DOCUMENT_ROOT'] . '/';
        $repertoire_upload_absolu   = $root . 'uploads/';
        $the_name = $_FILES['mon_fichier']['name'];
        $result = move_uploaded_file($_FILES['mon_fichier']['tmp_name'], $repertoire_upload_absolu.$the_name);
        echo 'result : ' . $result . '<br />';
    break;
}
?>

J'ai affiché DOCUMENT_ROOT pour vérifier l'endroit où on se trouve sur le disque local,
avec MAMP c'est le répertoire :  /Applications/MAMP/htdocs;

Si result vaut 1 : le déplacement s'est bien passé et le fichier est dans le répertoire uploads,
si result = rien, erreur de déplacement. 

Vérifier les permissions d'écriture dans le répertoire de destination

-
Edité par ChrisLebure 21 décembre 2016 à 10:29:15

  • Partager sur Facebook
  • Partager sur Twitter
20 février 2020 à 10:50:31

Boujour, 

Si on a Wamp il faut faire comment pour charger une image ?

Merci à vous

  • Partager sur Facebook
  • Partager sur Twitter
20 février 2020 à 11:22:44

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter