Upload de fichiers

Emy
Invité n'ayant pas de compte PHPfrance

21 janv. 2009, 11:47

Bonjour,

J'ai teste cet exemple sur l'upload, et ca me donne cette erreur:

Code : Tout sélectionner

Warning: move_uploaded_file(/home/monsite/photos/admin_cp.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in D:\Projet\Site\xampp\htdocs\Sites\Apprendre\forms\30.php on line 30 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'D:\Projet\Site\xampp\tmp\php5234.tmp' to '/home/monsite/photos/admin_cp.jpg' in D:\Projet\Site\xampp\htdocs\Sites\Apprendre\forms\30.php on line 30
mais je l'ai deja teste auparavant et ca a marche, j'ai meme fait mon propre code et me donne la meme erreur au niveau de move_upload_file, est ce que cette erreur vient du fichier php.ini?

merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

21 janv. 2009, 12:00

Bonjour,

En regardant le message d'erreur et spécifiquement cette portion:
'D:\Projet\Site\xampp\tmp\php5234.tmp' to '/home/monsite/photos/admin_cp.jpg'
J'ai l'impression qu'il y a un mélange entre un chemin Windows D:\... et un chemin linux /home/...
Il faut que tu modifie $dest_dossier pour qu'il soit adapté au répertoire où tu veux mettre le fichier ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Invité
Invité n'ayant pas de compte PHPfrance

21 janv. 2009, 12:11

alors pour mon code est comme suite:
connexion();

// on declare les 5 parametre de print_r['FILES']
$cv = basename($_FILES['cv']['name']); // nom reel de l image
$cv_temp = $_FILES['cv']['tmp_name']; // nom temporaire de l image sur le serveur
$type_cv = $_FILES['cv']['type']; // type de l image: gif, jpeg...
$taille_cv = $_FILES['cv']['size']; // taille de l image
$erreur_cv = $_FILES['cv']['error']; // les erreurs generees

// on declare la taill max
$Max_Size = '2000000'; // taille maximale est 2 MO

// d autres variables
$Destination = "CVs/"; // on cree un dossier ou les images seront stockees, n oubliez pa le / apre le nom du repertoire

$Allowed_Ext = array('doc','docx','rtf');
$Repertoire = substr('CVs/',0,-1); //on va supprimer le / avec -1


if (isSet($_POST['send']))
{


$sql = "select * from recrutement where nom='$nom' AND prenom='$prenom'";
$result = mysql_query($sql) or die ('Erreur: '.mysql_error());
$total = mysql_num_rows($result);


///////////////////// on control si les champs etaient bien rempli:
// on control si les champs sont vide ou non
// si on a récupéré un résultat on l'affiche.
if($total) {
	?>
	<form name="recherche" method="GET"></form>
	<?
	$Erreur = '<li>Candidat&nbsp;'.$nom. '&nbsp;existe deja, <a href="rechercher_candidat.php?candidat='.$nom.'">click ici </a>pour le chercher</li>';
	}
	?>

</form>
<?
if($nom=='') {
	$Erreur .= '<li>Nom vide</li>';
}

if($prenom=='') {
	$Erreur .= '<li>Prénom vide</li>';
}

if($ville=='') {
	$Erreur .= '<li>Ville vide</li>';
}

if($nom_departement=='') {
	$Erreur .= '<li>Département vide</li>';
}

if($poste=='') {
	$Erreur .= '<li>Poste vide</li>';
}

if($salaire=='') {
	$Erreur .= '<li>Salaire vide</li>';
}

if($cv=='') {
	$Erreur .= '<li>Pas de fichier à uploader</li>';
}

if($remarques=='') {
	$Erreur .= '<li>Remarques vide</li>';
}

// on verifie la taille si elle est superieur a 1 MO
//On va vérifier la taille du fichier en ne passant pas par $_FILES['ma_photo']['size'] pour éviter les failles de sécurité
if($taille_cv>$Max_Size)
{
	$Erreur .= '<li>Fichier est au delà de 2 MO</li>';
}


if (!eregi('[A-Za-z0-9]', $nom)) {
    $Erreur .= '<li>Le nom contient des codes inacceptable</li>';
}

if (!eregi('[A-Za-z0-9]', $prenom)) {
    $Erreur .= '<li>Le prenom contient des codes inacceptable</li>';
}

// on verifie si le fichier a la bonne extension
$Check = strstr($cv, '.');
$Check2 = substr($Check,1); // celle la donne .extension_de_l'image
$File_Ext = strtolower($Check2); // on va convertir les extension Majiscules en miniscules JPG => jpg pr k on aura pa l erreur ke le fichier n a pas la bonne extension

if (!in_array($File_Ext, $Allowed_Ext)) {
    $Erreur .= '<li>Le fichier n\'a pas la bonne extension</li>';

}


$Cible = $Destination.$nom_departement.'/'.$cv;
echo 'le nom de la cible est:'. $Cible.'<br>';

// on doit tester si le fichier existe deja
if (file_exists($cv)) { //si le fichier existe en sa destionation, on doit mentioner le chemin
	$Erreur .= '<li>Le fichier&nbsp;' .$cv. '&nbsp;existe déjà</li>';
	}

// si une des erreurs s'est produite
if (isset($Erreur))
{
// on inclu le login
	?>
<div align="center">
<fieldset class="Fieldset02">
<legend class="Legend01">Veuillez vérifier les erreurs ci-dessous:</legend>
<?php
echo '<ul class="UL01">';
	echo '<font color="Red">' .$Erreur. '</font>';
echo '</ul>';
echo '<br>';
echo '<A HREF="javascript:history.go(-1)" class="Link01">Retourner</A>';
?>
</fieldset>
</div>
<?php
	}
else
{

$ok = move_uploaded_file($cv_temp,$Cible); // c le meme on fai le move
echo 'le nom du move:'. $ok.'<br>';
echo 'le nom du cv temp est:'. $cv_temp.'<br>';

if ($ok) {
$cv_fin = $nom.' '.$prenom.'.'.$File_Ext;

$cv_final = rename($_SERVER["DOCUMENT_ROOT"].'/Sites/Malabata/RH/'.$Cible,$_SERVER["DOCUMENT_ROOT"].'/Sites/Malabata/RH/'.$Destination.$nom_departement.'/'.$cv_fin);

echo 'le cv final est: '.$cv_final.'<br>';

echo $_SERVER["DOCUMENT_ROOT"];

?>
<div align="center">
<fieldset class="Fieldset03">
<legend class="Legend01">Félicitations:</legend>
<?php
	echo '<ul class="UL01">';
	echo '<li>Votre fichier a été bien envoyé</li>';

//echo '<meta http-equiv="refresh" content="5; URL=merci.php">';

$sql1 = "INSERT INTO recrutement (nom, prenom, ville, nom_departement, poste, salaire, status, cv_fin, remarques)
         VALUES ('".$nom."', '".$prenom."', '".$ville."', '".$nom_departement."', '".$poste."', '".$salaire."', '".$status."', '".$cv_fin."', '".$remarques."')";
//echo 'Requête :<br />'.$sql1.'<br />';
$result1 = mysql_query($sql1) or die ('Erreur: '.mysql_error());
$total1 = mysql_affected_rows();

//if ($total1)
//{
//	echo '<li>Données bien insérées <a href="index.php?rubrique=Candidats_Ajout">Ajouter un candidat</a><br>';
//	echo '</ul>';
//}
}
else
{
	echo 'non inserer';
}
		mysql_close();
		}
		}
		else
		{
			echo 'qu est ce que vous faites ici?';
		}
		?>
</fieldset>
</div>
j ai la destination qui existe: le nom de la cible est:CVs/Direction/a.docx

Emy
Invité n'ayant pas de compte PHPfrance

21 janv. 2009, 12:38

C'est bon, dans les 2 exemples, les pseudo frames ont une cause de ce probleme, merci :)