Comment Créé Une Formule D'Upload

[Résolu/Fermé]
Signaler
Messages postés
211
Date d'inscription
vendredi 11 octobre 2013
Statut
Membre
Dernière intervention
18 octobre 2021
-
Messages postés
261
Date d'inscription
mardi 22 octobre 2013
Statut
Membre
Dernière intervention
22 mars 2017
-
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

2 réponses

Messages postés
261
Date d'inscription
mardi 22 octobre 2013
Statut
Membre
Dernière intervention
22 mars 2017
50
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
Messages postés
211
Date d'inscription
vendredi 11 octobre 2013
Statut
Membre
Dernière intervention
18 octobre 2021
1
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
Messages postés
261
Date d'inscription
mardi 22 octobre 2013
Statut
Membre
Dernière intervention
22 mars 2017
50
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é ;-)
Messages postés
211
Date d'inscription
vendredi 11 octobre 2013
Statut
Membre
Dernière intervention
18 octobre 2021
1
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?
Messages postés
261
Date d'inscription
mardi 22 octobre 2013
Statut
Membre
Dernière intervention
22 mars 2017
50
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.
Messages postés
211
Date d'inscription
vendredi 11 octobre 2013
Statut
Membre
Dernière intervention
18 octobre 2021
1
Ç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
Messages postés
261
Date d'inscription
mardi 22 octobre 2013
Statut
Membre
Dernière intervention
22 mars 2017
50 >
Messages postés
211
Date d'inscription
vendredi 11 octobre 2013
Statut
Membre
Dernière intervention
18 octobre 2021

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