PHP upload de fichier impossible
sdrogba
Messages postés
74
Statut
Membre
-
sdrogba Messages postés 74 Statut Membre -
sdrogba Messages postés 74 Statut Membre -
Bonjour,
Je suis entrain de monter un site et en attendant d'avoir mes accès sur mon hébergeur je fais des essais en local, j'en suis à essayer d'uploader des images.
Voici mon code :
Code :
Sélectionner tout - Visualiser dans une fenêtre à part
$dossier = 'C:/wamp/www/Geckos/Photo/'.$nom.'/';
mkdir($dossier, 0777);
$fichier = basename($_FILES['upfile']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['upfile']['tmp_name']);
$extensions = array('.png', '.gif', '.JPG', '.jpeg');
$extension = strrchr($_FILES['upfile']['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...';
}
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);
echo "fichier ".$fichier;
echo "dossier ".$dossier;
echo"fonction ".$_FILES['upfile']['tmp_name']." gggggg ". $dossier . $fichier;
if(move_uploaded_file($_FILES['upfile']['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;
}
C'est la dernière partie de code qui ne va pas il semblerait que la fonction move_uploaded_file retourne faux à chaque fois.
Enfin et ça je ne comprend pas pourquoi mais $_FILES['upfile']['tmp_name'] renvoie blanc et je ne sais pas quoi faire voici la partie formulaire
Code :
Sélectionner tout - Visualiser dans une fenêtre à part
echo 'Photo 1 : <input name="upfile" type="file" size="50"><br />';
J'ai bien mis
Code :
Sélectionner tout - Visualiser dans une fenêtre à part
<form method="post" enctype="multipart/form-data" action="...">
Et php.ini
Code :
Sélectionner tout - Visualiser dans une fenêtre à part
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; <a href="http://php.net/file-uploads" target="_blank">https://www.php.net/manual-lookup.php?pattern=file-uploads&lang=en&scope=404quickref
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; <a href="https://www.php.net/manual/en/ini.core.php#ini.upload-tmp-dir" target="_blank">https://www.php.net/manual-lookup.php?pattern=upload-tmp-dir&lang=en&scope=404quickref
upload_tmp_dir = "c:/wamp/tmp"
; Maximum allowed size for uploaded files.
; <a href="https://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize" target="_blank">https://www.php.net/manual-lookup.php?pattern=upload-max-filesize&lang=en&scope=404quickref
upload_max_filesize = 10M
Aidez moi svp je tourne en rond depuis quelques heures déja.
Merci d'avance
Je suis entrain de monter un site et en attendant d'avoir mes accès sur mon hébergeur je fais des essais en local, j'en suis à essayer d'uploader des images.
Voici mon code :
Code :
Sélectionner tout - Visualiser dans une fenêtre à part
$dossier = 'C:/wamp/www/Geckos/Photo/'.$nom.'/';
mkdir($dossier, 0777);
$fichier = basename($_FILES['upfile']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['upfile']['tmp_name']);
$extensions = array('.png', '.gif', '.JPG', '.jpeg');
$extension = strrchr($_FILES['upfile']['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...';
}
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);
echo "fichier ".$fichier;
echo "dossier ".$dossier;
echo"fonction ".$_FILES['upfile']['tmp_name']." gggggg ". $dossier . $fichier;
if(move_uploaded_file($_FILES['upfile']['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;
}
C'est la dernière partie de code qui ne va pas il semblerait que la fonction move_uploaded_file retourne faux à chaque fois.
Enfin et ça je ne comprend pas pourquoi mais $_FILES['upfile']['tmp_name'] renvoie blanc et je ne sais pas quoi faire voici la partie formulaire
Code :
Sélectionner tout - Visualiser dans une fenêtre à part
echo 'Photo 1 : <input name="upfile" type="file" size="50"><br />';
J'ai bien mis
Code :
Sélectionner tout - Visualiser dans une fenêtre à part
<form method="post" enctype="multipart/form-data" action="...">
Et php.ini
Code :
Sélectionner tout - Visualiser dans une fenêtre à part
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; <a href="http://php.net/file-uploads" target="_blank">https://www.php.net/manual-lookup.php?pattern=file-uploads&lang=en&scope=404quickref
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; <a href="https://www.php.net/manual/en/ini.core.php#ini.upload-tmp-dir" target="_blank">https://www.php.net/manual-lookup.php?pattern=upload-tmp-dir&lang=en&scope=404quickref
upload_tmp_dir = "c:/wamp/tmp"
; Maximum allowed size for uploaded files.
; <a href="https://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize" target="_blank">https://www.php.net/manual-lookup.php?pattern=upload-max-filesize&lang=en&scope=404quickref
upload_max_filesize = 10M
Aidez moi svp je tourne en rond depuis quelques heures déja.
Merci d'avance
A voir également:
- PHP upload de fichier impossible
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Impossible de supprimer un fichier - Guide
- Comment réduire la taille d'un fichier - Guide
12 réponses
je ne comprend pas pourquoi mais $_FILES['upfile']['tmp_name'] renvoie blanc
est ce que le repertoire tmp existe bien dans ton repertoire wamp, c'est la que le fichier temporaire est téléchargé avant le move_updated_file(
autre remarque: ne mets pas C:/wamp/www/Geckos/Photo/'.$nom.'/'
mais utilises le chemin relatif par rapport à ton script php sinon lorsque tu vas transférer ton code chez ton hébergeur ça ne marchera pas
est ce que le repertoire tmp existe bien dans ton repertoire wamp, c'est la que le fichier temporaire est téléchargé avant le move_updated_file(
autre remarque: ne mets pas C:/wamp/www/Geckos/Photo/'.$nom.'/'
mais utilises le chemin relatif par rapport à ton script php sinon lorsque tu vas transférer ton code chez ton hébergeur ça ne marchera pas
Pour ce qui du chemin j'utiliserais les chemin relatif la c'était juste pour que ce soit clair pour l'explication de mon problème ici.
Autrement comment je peux connaitre ce répertoire temporaire vu qu'il est blanc expliquez moi svp.
Autrement comment je peux connaitre ce répertoire temporaire vu qu'il est blanc expliquez moi svp.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
les fichiers sess sont des fichiers de session qui n'ont pas été fermés
Le fichier temporaire qui est mis ici lors de l'upload est supprimé lorsque c'est fini
quelle est la taille du fichier que tu essayes d'uploader ?
Le fichier temporaire qui est mis ici lors de l'upload est supprimé lorsque c'est fini
quelle est la taille du fichier que tu essayes d'uploader ?
voilà ou est l'erreur,
avec cette methode en php tu ne peux pas uploader de fichier de taille supérieure à 1Mo (1,2 Mo au maxi)
c'est limité par la durée d'exécution du script php qui serait trop longue et les hébergeurs n'aiment pas ça
j'ai essayé ton script, corrigé un petit bug:
avec un petit fichier il fonctionne
Pour de gros fichiers il faut trouver une autre solution, vas voir JUpload
avec cette methode en php tu ne peux pas uploader de fichier de taille supérieure à 1Mo (1,2 Mo au maxi)
c'est limité par la durée d'exécution du script php qui serait trop longue et les hébergeurs n'aiment pas ça
j'ai essayé ton script, corrigé un petit bug:
if(!file_exists($dossier)){
mkdir($dossier, 0777);
}
avec un petit fichier il fonctionne
Pour de gros fichiers il faut trouver une autre solution, vas voir JUpload