Bonjour,
J'ai concu un code en m'inspirant de diverses site pour uploader une image dans un dossier déjà créer mais il me dit que mon $img = $_POST['img'] est nul alors que je l'upload avec un formulaire avez vous des idées pourquoi?
mon index.php
<!Doctype html>
<html>
<head>
<title> uploader une image </title>
</head>
<body>
<form action="index.php" method="post" enctype="multipart/form-data">
<input type="text" name="nom" placeholder="Nom" />
<input type="text" name="prenom" placeholder="Prenom" />
<input type="file" name="img" id="img" />
<button type="submit" name="val"> Valider </button>
</form>
<br />
<?php
include("fonction.php");
if(isset($_POST['val']))
{
$nom = $_POST["nom"];
$prenom = $_POST['prenom'];
$img = $_POST['img'];
var_dump($img);
upload($img, "fichier/");
}
?>
</body>
</html>
du coup j'ai adapté ma fonction à mon code en le modifiant
ma nouvelle fonction upload :
function upload($index, $destination)
{
$tmp_file = $_FILES[$index]['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
// on vérifie maintenant l'extension
$type_file = $_FILES[$index]['type'];
if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
{
exit("Le fichier n'est pas une image");
}
// on copie le fichier dans le dossier de destination
$name_file = $_FILES[$index]['name'];
if( !move_uploaded_file($tmp_file, $destination . $name_file) )
{
exit("Impossible de copier le fichier dans $destination");
}
echo "Le fichier a bien été uploadé";
}
mon index.php
include("fonction.php");
if(isset($_POST['val']))
{
$nom = $_POST["nom"];
$prenom = $_POST['prenom'];
upload('img',"/home/tibdev/Public/www/test_img/fichier/");
}
et j'ai des problèmes de droit cette fois du style
Warning: move_uploaded_file(/home/tibdev/Public/www/test_img/fichier/intercite.jpg): failed to open stream: Permission denied in /home/tibdev/Public/www/test_img/fonction.php on line 61
je fais un chmod() du coup?
erreur ressortis :
Notice: Undefined index: img in /home/tibdev/Public/www/test_img/index.php on line 21
Call Stack
# Time Memory Function Location
1 0.0001 363616 {main}( ) .../index.php:0
/home/tibdev/Public/www/test_img/index.php:22:null
ok mais encore deux erreurs :
pour
$uploadFichier = $destination . basename($_FILES[$index]['name']);
et
if(move_uploaded_file($_FILES[$index]['tmp_name'], $uploadFichier))
il me sort un
Warning: Illegal offset type
et pourtant je voie par pourquoi car il prend pas en compte le $_FILES[$index]['name'] et $_FILES[$index]['tmp_name'] ce qui est bizarre car, dans la doc ils disent que sa s'écrit comme sa.
C'est ton $index qui pose soucis, d'ailleurs, tu le sors d'où ?
Il faut le remplacer par le name de ton input file, à savoir img.
Cet page sur l'upload devrait t'aider.
enfaite mon $index est le name de mont input contenant le fichier.
voila ma fonction upload
function upload($index, $destination)
{
$uploadFichier = $destination . basename($_FILES[$index]['name']);
var_dump($uploadFichier);
echo "<pre>";
if(move_uploaded_file($_FILES[$index]['tmp_name'], $uploadFichier))
{
echo "Le fichier est valide, et a été téléchargé
avec succès. Voici plus d'informations :\n";
}
else {
echo "Attaque potentielle par téléchargement de fichiers.
Voici plus d'informations :\n";
}
echo 'Voici quelques informations de débogage :';
print_r($_FILES);
echo '</pre>';
}
et mon index.php
<!Doctype html>
<html>
<head>
<title> uploader une image </title>
</head>
<body>
<form action="index.php" method="post" enctype="multipart/form-data">
<input type="text" name="nom" placeholder="Nom" />
<input type="text" name="prenom" placeholder="Prenom" />
<input type="file" name="img" id="img" />
<button type="submit" name="val"> Valider </button>
</form>
<br />
<?php
include("fonction.php");
if(isset($_POST['val']))
{
$nom = $_POST["nom"];
$prenom = $_POST['prenom'];
$img = $_FILES['img'];
var_dump($img);
upload($img,"/home/tibdev/Public/www/test_img/fichier/");
}
?>
</body>
</html>
Je vais suivre ta logique en reprenant ton code et en laissant les erreurs :
<!Doctype html>
<html>
<head>
<title> uploader une image </title>
</head>
<body>
<form action="index.php" method="post" enctype="multipart/form-data">
<input type="text" name="nom" placeholder="Nom" />
<input type="text" name="prenom" placeholder="Prenom" />
<input type="file" name="img" id="img" />
<button type="submit" name="val"> Valider </button>
</form>
<br />
<?php
include("fonction.php");
if(isset($_POST['val']))
{
$nom = $_POST["nom"];
$prenom = $_POST['prenom'];
$img = $_FILES['img'];
var_dump($img);
upload($img,"/home/tibdev/Public/www/test_img/fichier/");
// Je pourrais remplacer par ceci :
// upload($_FILES['img'],"/home/tibdev/Public/www/test_img/fichier/");
}
?>
</body>
</html>
Ensuite on passe à la fonction
//Nous sommes d'accord que $index = $_FILES['img']
function upload($index, $destination)
{
$uploadFichier = $destination . basename($_FILES[$index]['name']);
// Donc je remplace $index par la vrai valeur qu'on lui a atribué
// $uploadFichier = $destination . basename($_FILES[$_FILES['img'] ]['name']);
// Es-tu tu sur que c'est ce que tu veux ?
var_dump($uploadFichier);
echo "<pre>";
if(move_uploaded_file($_FILES[$index]['tmp_name'], $uploadFichier))
{
echo "Le fichier est valide, et a été téléchargé
avec succès. Voici plus d'informations :\n";
}
else {
echo "Attaque potentielle par téléchargement de fichiers.
Voici plus d'informations :\n";
}
echo 'Voici quelques informations de débogage :';
print_r($_FILES);
echo '</pre>';
}
Alors ta réponse ?