Comment Uploader un fichier via un formulaire en PHP ?

Fermé
gringo75011 Messages postés 2 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 25 janvier 2014 - Modifié par gringo75011 le 25/01/2014 à 22:15
totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 - 29 janv. 2014 à 23:08
Bonjour à tous,

Je poste ce message car je poursuis actuellement le tutoriel sur PHP (celui de mateo sur le site du zero) et je suis sur la partie upload de fichiers via un formulaire; Je fais tout pour le moment en local et mes questions tournent autour du point suivant :
Comment uploader un fichier en PHP à partir du répertoire temporaire vers un répertoire définitif dans mon dossier var/www?

Pour info, je suis sur ubuntu 13.10 virtualisé sous vm player.
Je n'arrive pas à réaliser l'action MAIS je ne vois pas ce qui cloche dans mon code.

Remarque : j'ai créé 2 fichiers dans www :
1er fichier : fichier du formulaire de téléchargement du fichier (une image dans mon cas) appelé envoi.php :
<!DOCTYPE html>

<html>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css"> .blue {background-color : #00FFFF} </style>

<body>
<form action="cible_envoi.php" method="post" enctype="multipart/form-data">
<div class="blue">Formulaire d'envoi de fichier :</br>
<input type="file" name="monfichier" /><br/>
<input type="submit" value="Envoyer le fichier" />
</div>

</form>
</body>

</html>

Fichier cible_envoi.php :
<!DOCTYPE>

<html>
<head>
<title>Test en cours</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
<?php
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur

if (isset($_FILES['monfichier']) && $_FILES['monfichier']['error'] == 0)
{
//Testons si le fichier n'est pas trop gros
if ($_FILES['monfichier']['size'] <= 1000000)
{
//Testons si l'extension est autorisée
$infosfichier = pathinfo($_FILES['monfichier']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
if (in_array($extension_upload, $extensions_autorisees))
{
//On peut valider le fichier et le stocker définitivement
move_uploaded_file($_FILES['monfichier']['tmp_name'], '/var/www/Tests/uploads/'. basename($_FILES['monfichier']['name']));
echo "L'envoi a bien été effectué !";
}
else
{
echo "il y'a un problème dans le deuxième if";
}
}
else
{
echo "Il y'a un problème dans le 2 if";
}
}
else
{
echo "Il y'a un bug dans le if initial";
}



?>
</body>
</html>

Merci d'avance pour votre aide.
A voir également:

1 réponse

totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
29 janv. 2014 à 23:08
salut,

$_FILES['fichier']['name'] te donne le nom du fichier, pas besoin de basename à priori.

https://www.php.net/basename

basename prend en paramètre un chemin
0