Bonjour,
Voila je rencontre un petit problème avec mon code.
J'essaie d'enregistrer un fichier, dans un dossier, chargé dans un input.
Voilà mon code HTML :
<form method="post" action="" class="form-horizontal" enctype="multipart/form-data">
<input type="file" name="fichier" class="form-control">
<button type="submit" name="submit">Valider</button>
</form>
Voilà mon code PHP :
<?php
echo "<pre>";
print_r($_FILES);
print_r($_FILES["fichier"]);
echo "</pre>";
if(isset($_FILES["fichier"]))
{
$dossier = 'uploads/';
$fichier = basename($_FILES['fichier']['name']);
if(move_uploaded_file($_FILES['fichier']['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 !';
}
}
?>
Je souhaite enregistrer un fichier dans un dossier
Voilà ce que ce code me retourne x)
Array
(
)
J'éspère avoir été clair, sinon je repondrai à vos questions :)
Merci d'avance !
le Array vide que tu nous montres, c'est bien le premier print_r
s'il est vide c'est que le formulaire n'est pas envoyé correctement
regarde avec les outils de dev de ton navigateur pour voir ce qui est envoyé
et dis nous comment tu submit ton formulaire parce qu'on ne sait toujours pas
Edit : si c'est la même page, met une action quand même, le nom de la page ou # ?
Oui c'est bien le premier print_r
Si je var_dump $_POST, les données sont bien envoyés, et me renvoie bien le nom du fichier uploadé
le pb doit venir de php
regarde si tu as bien
file_uploads = On
dans ton php.ini (tu peux aussi regarder dans phpinfo)
Bonjour,
Je n'ai pas bien compris votre problème
Mais je vous propose de voire ce tuto il vous sera peut être utile
Upload de fichier ou téléchargements de fichiers sur votre serveur
Bonne chance
Merci pour le lien.
Je viens d'essayer le code,
Une fois le formulaire envoyé, le texte apparait bien, mais aucune valeur n'apparait devant ^^'
Le code php donné dans le lien du dessus
<?php
if ($_FILES["fichier"]["error"] > 0)
{
echo "Error: " . $_FILES["fichier"]["error"] . "<br
/>";
}
else
{
echo "Fichier à télécharger : " . $_FILES["fichier"]["name"] .
"<br />";
echo "Type : " . $_FILES["fichier"]["type"] . "<br />";
echo "Taille : " . ($_FILES["fichier"]["size"] / 1024) . "
Kb<br />";
echo "Stocké dans : " . $_FILES["fichier"]["tmp_name"]; }
?>
Et voilà ce que cela me retourne
Fichier à télécharger :
Type :
Taille : 0 Kb
Stocké dans :
Bonjour,
C'est un peu logique qu'il n'y ai rien puisque le print_r($_FILES); est vide.
Vous travaillez en local ou en ligne ?
Avez-essayer d'envoyer une variable de type text pour vérifier que le formulaire fonctionne ?
Oui $_FILES est vide mais ce n'est pas normal puisque je charge un fichier dans l'input file nan ?
Je travaille en local.
De quoi parlez-vous lorsque vous parlez d'une variable de type text ?
Hello ça très probable un problème de droit d'écriture.
Il faut mettre le dossier tmp et le dossier de destination en droit 777 pour pouvoir écrire dedans
Pour info c'est la variable php upload_tmp_dir qui indique où le fichier atterrit
il me semble que ça pointe sur /private/tmp
Hello
Voilà mon code et il marche
Attention il y a beaucoup de vérification à faire avant et ceci est en PHPoo
<?php
$infoImg = pathinfo($this->getUploadName($file));
$this->newName = md5(time());
$this->extension = strtolower($infoImg['extension']);
$newImg = 'uploads/'.$this->newName.'.'.$this->extension;
if(!move_uploaded_file($this->getUploadTmpName($file), $newImg)){
$errors = 'Une erreur s\'est produite';
return false;
}else{
return true;
}
?>
Peut être que ton code fonctionne mais aucun commentaires, getUploadName bah on sait pas comment ça fonctionne...
Je ne pense pas que ça soit adapté à son code !
Pour en revenir au sujet, j'aurais pue t'aider, mais je ne sais pas comment ça fonctionne sur MAC donc désolé !
Sinon j'aurais fait
<?php
if(!empty($_POST)){
if(!empty($_FILE["fichier"])){
}
}
?>
Ce n'est peut être pas ça mais bon !
Juste à lire le nom de la fonction pour savoir son fonctionnement :)
<?php
/**
* @param $file
* @return mixed
*/
private function getUploadName($file){
$name = $file['name'];
$this->name = $name;
return $this->name;
}
?>
salut, j'ai essayé ton bout de code :
<?php
<form method="post" class="form-horizontal" enctype="multipart/form-data">
<input type="file" name="fichier" class="form-control">
<button type="submit" name="submit">Valider</button>
</form>
print_r($_FILES);
?>
et ça fonctionne tres bien chez moi.
ça ne vient surement pas de la partie move_uploaded_file
en passant les spécs html5 stipulent que si "l'attribut action est spécifié, il doit avoir une url" correcte. donc tu peux carrément l'enlever.
Salut @ZarKx voila donc ce que j'ai fais de mon côté sur ton code.
1.) J'ai recupérer à la ligne près ton code
2.) J'ai crée un dossier uploads
3.) J'ai envoyer une images dans le formulaire
4.) J0ai verifier si l'upload à étè executer correctement et si ton tableau étais remplie
J'en ai conclu que ton code étais fonctionnel sur windows 7 il est donc possible que ce soit un probléme qui vien de ton mac
Si tu veux je peux regarder de mon côté les probléme qui sont susseptible de survenir sur mac et te donner une solution de secours
Et regarde encore dans ton php.ini c'est deux point
post_max_size
upload_max_filesize
si y te parraissent peux éléver augmentes au maximum et réessaie une fois