Comment Créé Une Formule D'Upload

Résolu/Fermé
guillaumegilbertsoucy Messages postés 326 Date d'inscription vendredi 11 octobre 2013 Statut Membre Dernière intervention 4 juillet 2023 - 22 févr. 2016 à 22:28
LaurentMtns Messages postés 261 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 22 mars 2017 - 23 févr. 2016 à 17:43
Bonjour,

J'aimerais svp avoir de l'aide pour créer une page qui comprendrait un formulaire d'envois de fichiers. Je sais qu'il faut utiliser le PHP pour ça mais j'ai essayer mais je ne comprend pas quel code mettre pour que le fichier s'envoi dans un répertoire.

Merci de m'aider!

Guillaume
A voir également:

2 réponses

LaurentMtns Messages postés 261 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 22 mars 2017 51
Modifié par LaurentMtns le 22/02/2016 à 22:58
Regarde donc de ce coté ;-)

Html du formulaire :
<form method="POST" action="upload.php" enctype="multipart/form-data">
     <!-- On limite le fichier à 100Ko mais tu peux retirer ou augmenter cette valeur -->
     <input type="hidden" name="MAX_FILE_SIZE" value="100000">
     Fichier : <input type="file" name="avatar">
     <input type="submit" name="envoyer" value="Envoyer le fichier">
</form>


Php de la page upload.php qui se chargera d'uploader le fichier dans le bon dossier :
<?php
$dossier = 'upload/'; //dossier où tu veux mettre le fichier uploadé
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg'); //les extensions que tu autorises
$extension = strrchr($_FILES['avatar']['name'], '.'); 

//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}

//si tu supprimes la limitation de taille, enlève ce if
if($taille>$taille_maxi) 
{
     $erreur = 'Le fichier est trop gros...';
}

if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
          echo 'Upload effectué avec succès !';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
?>


Voila ;) bonne soirée

"Stand up for what you believe in even if that means standing alone." - A. Biersack
0
guillaumegilbertsoucy Messages postés 326 Date d'inscription vendredi 11 octobre 2013 Statut Membre Dernière intervention 4 juillet 2023 8
23 févr. 2016 à 00:07
Bonjour Laurent!

Merci pour ton aide. Mais comme de raison, ça la pas fonctionné. "Echec de l'upload !"

Je crois que ça bloque au niveau du dossier de destination. J'ai bel et bien crée le dossier "upload" dans /var/www/html .

Quelque chose de dérangé au niveau du dossier de destination?

Bonne soirée à toi aussi!

Guillaume
0
LaurentMtns Messages postés 261 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 22 mars 2017 51
23 févr. 2016 à 00:47
Il y a effectivement une erreur dans le chemin d'accès au dossier "upload".

Vérifie que le chemin renseigné dans la variable $dossier est le bon.

Par exemple si le fichier contenant le formulaire ainsi que le dossier upload se trouvent à la racine du site, alors la valeur que j'ai donnée dans l'exemple est correcte si, si par exemple le fichier avec la form est à la racine et que le dossier upload est lui même dans un autre dossier, tu devrais avoir quelque chose ainsi :

$dossier = 'des/autres/dossiers/upload/';


J'espère que ça t'a aidé ;-)
0
guillaumegilbertsoucy Messages postés 326 Date d'inscription vendredi 11 octobre 2013 Statut Membre Dernière intervention 4 juillet 2023 8
23 févr. 2016 à 15:36
Bon matin,

Les fichiers index.html et upload.php se trouvent à /var/www/html et le dossier "upload" se trouve lui aussi à /var/www/html

Aurais t'il quelque chose que faut que j'ajoute dans le fichier upload.php concerant le dossier de destination?
0
LaurentMtns Messages postés 261 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 22 mars 2017 51
23 févr. 2016 à 16:28
Dans ce cas, la valeur de la variable $dossier de mon exemple devrait être correcte.

As-tu modifié le nom du l'input relatif au fichier? Si oui peut-être ne l'as-tu pas changé dans le $_FILES["nom_correct"] car je viens de tester le code tel que je te l'ai donné et il fonctionne.
0
guillaumegilbertsoucy Messages postés 326 Date d'inscription vendredi 11 octobre 2013 Statut Membre Dernière intervention 4 juillet 2023 8
23 févr. 2016 à 17:26
Ça fonctionne maintenant! J'ai changé les permissions de Linux et là tout marche! J'ai même fait un bonus, j'ai monté avec curlftpfs un de mes comptes FTP de sur mon serveur FTP en locale dans fstab pour qui ce reconnecte au redemarrage de la machine et là les uploads fait sur cette page avec ce scripte sont envoyé directement sur mon serveur FTP.

Merci infiniment pour ton aide! :-)

Bonne journée à toi!

Guillaume
0
LaurentMtns Messages postés 261 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 22 mars 2017 51 > guillaumegilbertsoucy Messages postés 326 Date d'inscription vendredi 11 octobre 2013 Statut Membre Dernière intervention 4 juillet 2023
Modifié par LaurentMtns le 23/02/2016 à 17:44
Content de voir que le problème soit résolut :-)

De rien et bonne journée ;)

Laurent M.

PS: n'oublie pas de passer le sujet en résolu
0