Uploader une image dans un dossier précédent

Fermé
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 - Modifié par nik029 le 15/05/2013 à 19:11
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 - 25 mai 2013 à 19:52
Bonjour,

J'aimerais uploader une image, depuis un script PHP, et que cette image soit enregistré 3 dossiers avant la page d'upload.

Problème, cette image ne s'enregistre pas dans le dossier répertoire (qui est le dossier i/).

Voici mon script :

<?php
 
$poids_max = 100000; // Poids max de l'image en octets (1Ko = 1024 octets)
$repertoire = '../../../i'; // Repertoire d'upload
if (isset($_FILES['fichier']))
{

// On vérifit le type du fichier
if ($_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/jpeg' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/gif' && $_FILES['fichier']['type'] != 'image/bmp' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/ico')
{
$erreur = '<div class="alert alert-error"><p>Le fichier doit être au format *.jpeg, *.bmp, *.jpg, *.png, *.ico *.gif ou *.png .</p></div>';
}

// On vérifit le poids de l'image
elseif ($_FILES['fichier']['size'] > $poids_max)
{
$erreur = '<div class="alert alert-error"><p>Votre image est trop lourde.</p></div>';
}

// On vérifit si le répertoire d'upload existe
elseif (!file_exists($repertoire))
{
$erreur = '<div class="alert alert-error"><p><strong>Oops !</strong> Le dossier d\'upload n\'existe pas ou plus.</p></div>';
}

// Si il y a une erreur on l'affiche sinon on peut uploader
if(isset($erreur))
{
echo '' . $erreur . '';
}
else
{


// On définit l'extention du fichier puis on le nomme par le timestamp actuel
if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpeg'; }
if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpg'; }
if ($_FILES['fichier']['type'] == 'image/png') { $extention = '.png'; }
if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.gif'; }
$nom_fichier = time().$extention;

// On upload le fichier sur le serveur.
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $nom_fichier))
{
$url = 'http://site.hebergeur.com/i/'.$nom_fichier.'';
}
else
{
echo '<div class="alert alert-error"><p><strong>Oops !</strong> L\'image n\'a pas pu être uploader sur le serveur...</p></div>';
}

}

}
else
{

}
?>


Merci d'avance





Une fois un problème résolu, mettez un +1 sur la réponse qui vous à aidez et mettez Problème Résolu ! ;-)
A voir également:

16 réponses

jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
17 mai 2013 à 17:42
Enlève la vérif :
// On vérifit si le répertoire d'upload existe
elseif (!file_exists($repertoire))
{
$erreur = '<div class="alert alert-error"><p><strong>Oops !</strong> Le dossier d\'upload n\'existe pas ou plus.</p></div>';
}


Ensuite essaye ca :

// On upload le fichier sur le serveur.
if (move_uploaded_file($_FILES['fichier']['tmp_name'],$repertoire.'/'.$nom_fichier))
{
$url = 'http://site.hebergeur.com/'.$repertoire.'/'.$nom_fichier.'';
}
else
{
echo '<div class="alert alert-error"><p><strong>Oops !</strong> L\'image n\'a pas pu être uploader sur le serveur...</p></div>';
}
1
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
15 mai 2013 à 20:08
Salut !

J'espère ne pas dire de connerie en disant que :
../ dépend de ton serveur, il faut vérifié si ca fonctionne, et si tu as les droits pour remonter dans le dossier parent.

Sinon, je pense avoir trouvé :
$nom_fichier = time().$extention;

// On upload le fichier sur le serveur.
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $nom_fichier))
{
$url = 'http://site.hebergeur.com/i/'.$nom_fichier.'';
}

Tu n'utilises pas ton $repertoire ... Donc c'est un peu normal que ton image ne va pas la où tu le souhaite si tu ne lui dit pas d'y aller.
Et puis derniere chose, je ne pense que vérifier si le dossier d'upload existe soit judicieux, car dans le move_uploaded_file si le dossier n'existe pas il le cré automatiquement il me semble
0
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
16 mai 2013 à 16:42
Oui mais si je met genre :
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $nom_fichier))
{
$url = 'http://site.hebergeur.com/'.$repertoire.'/'.$nom_fichier.'';
} 


(car mon répertoire c'est i)

c'est là même chose que :

if (move_uploaded_file($_FILES['fichier']['tmp_name'], $nom_fichier))
{
$url = 'http://site.hebergeur.com/i/'.$nom_fichier.'';
} 

non ?
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
16 mai 2013 à 18:05
Mais il faut tu le précise dans la fonction move_uploaded_file !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
17 mai 2013 à 17:36
Lorsque mon code est comme ça :

<?php
 
$poids_max = 100000; // Poids max de l'image en octets (1Ko = 1024 octets)
$repertoire = '../../../i'; // Repertoire d'upload
if (isset($_FILES['fichier']))
{

// On vérifit le type du fichier
if ($_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/jpeg' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/gif' && $_FILES['fichier']['type'] != 'image/bmp' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/ico')
{
$erreur = '<div class="alert alert-error"><p>Le fichier doit être au format *.jpeg, *.bmp, *.jpg, *.png, *.ico *.gif ou *.png .</p></div>';
}

// On vérifit le poids de l'image
elseif ($_FILES['fichier']['size'] > $poids_max)
{
$erreur = '<div class="alert alert-error"><p>Votre image est trop lourde.</p></div>';
}

// On vérifit si le répertoire d'upload existe
elseif (!file_exists($repertoire))
{
$erreur = '<div class="alert alert-error"><p><strong>Oops !</strong> Le dossier d\'upload n\'existe pas ou plus.</p></div>';
}

// Si il y a une erreur on l'affiche sinon on peut uploader
if(isset($erreur))
{
echo '' . $erreur . '';
}
else
{


// On définit l'extention du fichier puis on le nomme par le timestamp actuel
if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpeg'; }
if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpg'; }
if ($_FILES['fichier']['type'] == 'image/png') { $extention = '.png'; }
if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.gif'; }
$nom_fichier = time().$extention;

// On upload le fichier sur le serveur.
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $nom_fichier))
{
$url = 'http://site.hebergeur.com/'.$repertoire.'/'.$nom_fichier.'';
}
else
{
echo '<div class="alert alert-error"><p><strong>Oops !</strong> L\'image n\'a pas pu être uploader sur le serveur...</p></div>';
}

}

}
else
{

}
?> 


L'image ne s'enregistre toujours par dans le bon dossier.
Et quand je configure mon répertoire comme ça :

$repertoire = 'i'; // Repertoire d'upload


Le message d'erreur s'affiche : Le dossier d'upload n'existe pas ou plus.

0
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
17 mai 2013 à 17:51
Cette fois, l'image va bien s'enregistrer dans le dossier indiqué ! Merci beaucoup de ton aide ! :)
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
17 mai 2013 à 17:55
Le répertoire est à préciser dans la fonction, ne l'oublie pas ;-) Et s'il n'existe pas il est créé donc pas besoin de vérifier.
0
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
18 mai 2013 à 18:23
Depuis quelques heures, j'ai ce message d'erreur qui s'affiche :

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpeRLdL4' to 'i/1368894103.png' in /home/a3389209/public_html/e/config/index.php on line 47


Que veut-il dire ?
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 mai 2013 à 22:29
Qu'il a pas pu mettre le fichier dans le dossier i/
0
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
19 mai 2013 à 22:05
Comment ça se fait (le dossier est de permission 777) ?
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
20 mai 2013 à 17:58
T'as changé quelque chose dans le code ?
0
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
21 mai 2013 à 08:48
Non justement, c'est pour ça que je comprends pas...
A part le répertoire qui est devenu : '../i''
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
21 mai 2013 à 14:31
Bah c'est surement ca ;-) Regarde le chemin si c'est le bon ! Il faut un chemin relatif, donc met toi dans le dossier de ton fichier php et regarde où est le dossier où tu veux mettre l'image !
0
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
21 mai 2013 à 16:37
C'est ce que j'ai fait mais le problème persiste
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
21 mai 2013 à 16:46
Essaye de voir avec realpath() de tes deux fichiers
Fais un realpath('dossier où tu veux uploadé'); et un realpath('fichier qui execute le code php');
0
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
25 mai 2013 à 19:52
Donc je dois faire
$repertoire = realpath('../i'); // Repertoire d'upload 


C'est bien ça ?
0