Uploader une image dans un dossier précédent

nik029 Messages postés 315 Statut Membre -  
nik029 Messages postés 315 Statut Membre -
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 1248 Statut Membre 79
 
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 1248 Statut Membre 79
 
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 315 Statut Membre 44
 
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 1248 Statut Membre 79
 
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 315 Statut Membre 44
 
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 315 Statut Membre 44
 
Cette fois, l'image va bien s'enregistrer dans le dossier indiqué ! Merci beaucoup de ton aide ! :)
0
jeremy.s Messages postés 1248 Statut Membre 79
 
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 315 Statut Membre 44
 
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 1248 Statut Membre 79
 
Qu'il a pas pu mettre le fichier dans le dossier i/
0
nik029 Messages postés 315 Statut Membre 44
 
Comment ça se fait (le dossier est de permission 777) ?
0
jeremy.s Messages postés 1248 Statut Membre 79
 
T'as changé quelque chose dans le code ?
0
nik029 Messages postés 315 Statut Membre 44
 
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 1248 Statut Membre 79
 
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 315 Statut Membre 44
 
C'est ce que j'ai fait mais le problème persiste
0
jeremy.s Messages postés 1248 Statut Membre 79
 
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 315 Statut Membre 44
 
Donc je dois faire
$repertoire = realpath('../i'); // Repertoire d'upload 


C'est bien ça ?
0