Upload un fichier en php

Fermé
Blyh Messages postés 4 Date d'inscription vendredi 23 octobre 2015 Statut Membre Dernière intervention 28 octobre 2015 - 23 oct. 2015 à 15:53
Blyh Messages postés 4 Date d'inscription vendredi 23 octobre 2015 Statut Membre Dernière intervention 28 octobre 2015 - 28 oct. 2015 à 13:55
Bonjour, j'aimerais upload un fichier en php sauf que je ne comprends pas pourquoi mon code ne fonctionne pas, je suis bloquée depuis plusieurs jours alors j'espère que quelqu'un pourra m'aider ! Merci d'avance =)

Je dois pouvoir en fait récupérer des adresses mail noté dans un fichier.csv et ensuite via ma base de données j'affiche les informations des personnes possédant tel ou tel adresse mail. J'y arrive mais il faut que le fichier.csv se trouve au même endroit que mes page.php (mon dossier "CSV"). Le problème est que les utilisateurs vont chercher les fichiers.csv sur leur ordinateur donc il faut que je puisse uploader les fichiers vers ce dossier "CSV". Je ne sais pas si je suis suffisamment clair. Voilà.


Voici mon code pour le upload:

email.php :

<?php

echo "<!DOCTYPE html>
<head>
<title> Fichier csv </title>
</head>

<body>

<form method=\"post\" action=\"import_csv.php\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"100000\" />
<input type=\"file\" name=\"fich\" id=\"fich\"/><br/><br/>
<input type=\"submit\" id=\"importer\" name=\"importer\" value=\"Importer\"/>
</form>

</body>
</html>";
?>




import_csv.php :

<?php
// echo phpinfo();
print_r($_FILES);
$name = $_FILES['fich']['name']; //Le nom original du fichier, comme sur le disque du visiteur (exemple : mon_icone.png).
$type = $_FILES['fich']['type']; //Le type du fichier. Par exemple, cela peut être « image/png ».
$size = $_FILES['fich']['size']; //La taille du fichier en octets.
$tmpName = $_FILES['fich']['tmp_name']; //L'adresse vers le fichier uploadé dans le répertoire temporaire.
$error = $_FILES['fich']['error']; //Le code d'erreur, qui permet de savoir si le fichier a bien été uploadé.
$maxsize = $_POST['MAX_FILE_SIZE'];

echo "name = ".$name."<br/>";
echo "type = ".$type."<br/>";
echo "size = ".$size."<br/>";
echo "tmpName = ".$tmpName."<br/>";
echo "error = ".$error."<br/>";

if ($_FILES['fich']['size'] > $maxsize)
{
echo "maxsize = ".$maxsize."<br/>";
echo "Le fichier est trop gros";
}


if ($_FILES['fich']['error'] > 0) $erreur = "Erreur lors du transfert";

$extensions_valides = array('csv');
//1. strrchr renvoie l'extension avec le point (« . »).
//2. substr(chaine,1) ignore le premier caractère de chaine.
//3. strtolower met l'extension en minuscules.
$extension_upload = strtolower(substr(strrchr($_FILES['fich']['name'], '.') ,1) );
if (in_array($extension_upload,$extensions_valides) ) echo "<br/>Extension correcte";


$nom = "/var/www/html/essai_csv/";
echo "<br/>nom = ".$nom;
$resultat = move_uploaded_file($tmpName,$nom,0777);

if ($resultat)
{
echo "<br/>Transfert réussi";
}else {
echo "<br/>Echec transfert";
}
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
27 oct. 2015 à 09:00
Salut,

La fonction move_uploaded_file attend un chemin vers un fichier en deuxième paramètre (variable $nom) or tu lui donne uniquement un chemin vers un dossier.

Bonne journée
0
Blyh Messages postés 4 Date d'inscription vendredi 23 octobre 2015 Statut Membre Dernière intervention 28 octobre 2015
27 oct. 2015 à 15:42
Ah merci Pitet !!! =)
0
Blyh Messages postés 4 Date d'inscription vendredi 23 octobre 2015 Statut Membre Dernière intervention 28 octobre 2015
28 oct. 2015 à 09:07
j'ai essayé, j'ai donc mis $nom = "/var/www/html/essai_csv/".$name;
mais ça me met toujours "Echec transfert"... pourquoi ?
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
28 oct. 2015 à 13:06
Un petit tour sur la doc de move_uploaded_file :

Si filename n'est pas valide, rien ne se passe, et move_uploaded_file() retournera FALSE.

Si filename est un fichier téléchargé, mais que pour une raison quelconque, il ne peut être déplacé, rien ne se passe, et move_uploaded_file() retourne FALSE. De plus, une alerte sera affichée.


Donc soit le chemin du fichier n'est pas valide, soit tu as une alerte indiquant l'erreur (surement un problème de droit).
Ajoute ceci au début de ton script si tu veux afficher les erreurs php :
ini_set('display_errors', true);
error_reporting(E_ALL);
0
Blyh Messages postés 4 Date d'inscription vendredi 23 octobre 2015 Statut Membre Dernière intervention 28 octobre 2015
28 oct. 2015 à 13:55
Merci ! je ne savais pas comment visualiser mon erreur ! Du coup c'est bon j'ai réussi !!! Merci encore Pitet !!! =DDD
0