IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

problème de chemin avec la fonction fopen


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Points : 85
    Points
    85
    Par défaut problème de chemin avec la fonction fopen
    Bonjour,
    mon hébergeur est free.fr.

    J'ai un script ajouter image dans un répertoire et je voudrais qu'il puisse créer un dossier dans un autre mais mon probléme est qu'il n'y arrive. Je dois avoir un probléme avec le chemin.
    mon script est dans /administration/img/members

    mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
     
    $fich="../site/img/members/";	
    $album=$affcre['id_gialbum'];
    								$nom_fic=htmlspecialchars($fich.'AIDER/'.$album.'/'.$nb_nom.$file_name);
     
    //au final $file est égale à ../site/img/members/a/21/kjh.jpg par exemple
     
    	if($OpenLocal= fopen($_FILES['userfile']['tmp_name'], "rb"))
    	{
    	// lecture entière du fichier temporaire
    		$LocalFileContent = fread($OpenLocal, $_FILES['userfile']['size']);
    	}
    je remercie d'avance celui qui m'aidera.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    La création d'un répertoire se fait à l'aide de la fonction mkdir. Sommes-nous d'accord sur ce point ?

    Est-ce que l'appel à la fonction move_uploaded_file ne serait pas faite avant fopen (parce que vous y utiliser encore son nom temporaire) ? Quel est le message d'erreur exact ?

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Points : 85
    Points
    85
    Par défaut
    Le message d'erreur est celui-ci:
    Warning: fopen(./site/img/members/AIDER/27/3acceuil.jpg) [function.fopen]: failed to open stream: No such file or directory in /mnt/113/sdc/a/9/villenvie.liban/administration/ajouter_image.php on line 100


    Le dossier de destination est déjà créé
    et voici mon script complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
     
    <?php
    //echo"$action";
    if((!empty($HTTP_POST_VARS["action"])))
    	{
    if($action=='ajouter image')
    {
    //recuperation variable
    $nom_album = htmlentities($_POST["nom_album"]) ;
    //echo"$nom_album";
    $label = htmlentities($_POST["label"]) ;
    $publics = htmlentities($_POST["publics"]) ;
    //echo"$publics";
     
    //----------------load_fic.php----le script--------------------------------------
    function MAX_FILE_SIZE() {
         //$max = 1024592; //taille en octet que tu definis toi meme
    	 $max = 5500000; 
         return $max;
    }
    //on controle si la taille du fichier n'est pas supérieur à celle autorisée par le serveur
    if(isset($_FILES["userfile"])) 
    {  
    if($_FILES['userfile']['error']==1)
    {
    	echo "<h1 class=txt>Erreur:</h1><div align=center class=bouton>Le fichier téléchargé excède la taille autorisée par le serveur(>2Mb)</div>"; 
    }
    //on controle si la taille du fichier n'est pas supérieur à celle autorisée par le vous
    //MAX_FILE_SIZE() est une fonction qui renvoie la taille max autorisée des fichiers
    elseif($_FILES['userfile']['size']>MAX_FILE_SIZE())
    {
    	echo "<h1 class=txt>Erreur:</h1><div align=center class=bouton>Le fichier téléchargé excède la taille autorisée:<br>Vous ne pouvez télécharger qu'un fichier dont la taille est inférieur à ".MAX_FILE_SIZE()." octets</div>"; 
    }
    //on gère si le fichier a été mal téléchargé
    elseif($_FILES['userfile']['error']==3)
    {
    	echo "<h1 class=txt>Erreur:</h1><div align=center class=bouton>Le fichier n'a été que partiellement téléchargé.</div>"; 
    }
    //on controle si y a un fichier a uploadé
    elseif($_FILES['userfile']['error']==4)
    {
    	echo "<h1 class=txt>Erreur:</h1><div align=center class=bouton>Aucun fichier n'a été téléchargé</div>"; 
    }
    //on controle le type du fichier, ici il fo que des *.JPG ou *.GIF
    elseif($_FILES['userfile']['type']!="image/gif" && $_FILES['userfile']['type']!="image/pjpeg")
    {
    	echo "<h1 class=txt>Erreur:</h1><div align=center class=bouton>Le fichier téléchargé n'est pas du type autorisé:<br>Vous ne pouvez télécharger qu'un fichier du type GIF(image/gif) ou JPEG(image/pjpeg)</div>";
    }
    //sinon c OK on commence la copie du fichier
    else
    {
    	// on récupère le type de l'image
    	if($_FILES['userfile']['type']=="image/pjpeg")
    	{
    		$_FILES['userfile']['type']="image/jpg";
    	}
    	$type=explode("/", $_FILES['userfile']['type']);
                    // on récupère l'extension appropriée
    	$ext=$type[1];
    	//on entre le chemin d'écriture du fichier
                    //on donne le nom voulue au fichier, ici avec le nom d'utilisateur de la session.
    $file_name=$_FILES['userfile']['name'];				
    //$nom_fic="/img/members/".$_SESSION['login']."$file_name";
    //$nom_fic="/img/members/".$_SESSION['login']."$file_name";
     
    			$req_nom="select id_gimage from gimage,gialbum where gimage.id_gialbum=gialbum.id_gialbum and nom_album='$nom_album';";
    			$res_nom=mysql_query($req_nom);
    			$nb_nom=mysql_num_rows($res_nom);
    			$nb_nom=$nb_nom+1;
    								$fich="/site/img/members/";	
    $reqcre="select id_gialbum from gialbum where nom_album='$nom_album';";
    			$e=$nom_album;
    			//echo"$e";
    $rescre=mysql_query($reqcre);
    $affcre=mysql_fetch_array($rescre);					
    								$album=$affcre['id_gialbum'];
    								$nom_fic=htmlspecialchars($fich.'AIDER/'.$album.'/'.$nb_nom.$file_name);
     
    								/*$fich="/img/members/";				
    								$album=$nom_album;
    								$nom_fic=htmlspecialchars($fich.$_SESSION['login'].'/'.$album.'/'.$nb_nom.$file_name);*/
    	//$fich2="/img/members/";							
    $_SESSION['nom_image']=htmlspecialchars($fich.'AIDER/'.$album.'/miniature/'.$nb_nom.$file_name);//recuperation du nom pour la miniature
    $_SESSION['nom_album']=$album;		
    $_SESSION['e']=$e;		
    //echo"$_SESSION[nom]";				
                   // on ouvre le fichier temporaire uploadé dans le répertoir temporaire du serveur
    	if($OpenLocal= fopen($_FILES['userfile']['tmp_name'], "rb"))
    	{
    	// lecture entière du fichier temporaire
    		$LocalFileContent = fread($OpenLocal, $_FILES['userfile']['size']);
    	}
    	else
    	{
    		fclose($OpenLocal);
    		die("<b>Erreur : </b>impossible d'ouvrir le fichier local '".$_POST['userfile'].".");
    	}
    	// Fermeture du fichier local
    	fclose($OpenLocal);
    	// Ouverture du fichier distant, si ce fichier existe, il sera écrasé   
    	if($OpenRemote = fopen(".".$nom_fic, "wb"))
    	{
    		// Ecriture du fichier temporaire dans le fichier distant 
    	        if(fwrite($OpenRemote, $LocalFileContent))
    	        {
    	        	fclose($OpenRemote);
    				$effectuer=1;
    				$date_verif = date('Y-m-d H:i:s');
    				$url=$nb_nom.$file_name;
    			$req_id="select id_gialbum from gialbum where nom_album='$e' and folder='AIDER';";
    			$res_id=mysql_query($req_id);
    			$aff_id=mysql_fetch_array($res_id);
    				$ins="insert into gimage(date_verif,label,url,hits,publics,id_gialbum) values('$date_verif','$label','$url','0', $publics,'$aff_id[id_gialbum]');";
                    $req_ins=mysql_query($ins);
    				//echo"$aff_id[id_gialbum]";
    				//echo"$nom_album";
    $_SESSION['url']=$url;				
    /*echo"$nom <br/>";
    echo"$label <br/>";
    echo"$date_verif <br>";
    echo"$aff_id[id_gialbum] <br/>";
    echo"$nom_fic";*/
     
    				   }
    	}
    	else
    	{
    		fclose($OpenRemote);
    		die("<b>Erreur : </b>impossible d'ouvrir le fichier distant '".$nom_fic.".");
    	}
    }
    }
    if($effectuer==1)
    {
    $_SESSION['nomfichier']=$nom_fic;
    redir("minia.php"); 
    }
    else{echo"non";}
     
    }
    }
     
    $reqs="select * from gialbum where folder='AIDER';";
     
    $ress=mysql_query($reqs);
    echo"<table width=\"100%\" border=\"0\">";
    //echo"<tr><td>choisissez l'album</td>";
    //$nbf= 0;
    /*echo "<td><select name=\"nom_album\">\n" ;
    while ($affals=mysql_fetch_array($ress))
    {
    echo "<option value=$affals[nom_album]>$affals[nom_album]</option>" ;//selectionner le nom de l'album
    echo"";
    $nbf++;
    }
    echo "</select>\n";*/
    //echo"$id_album";
    $reqs1=mysql_query("select nom_album from gialbum where id_gialbum='$id_album';");
    $affnom=mysql_fetch_array($reqs1);
    echo"<p class=\"grandtitre\">Bonjour, vous êtes dans l'assistant ajouter une image.</p>";
    echo"<p class=\"taille4ng\">Tout ce que vous avez à effectuer c'est de choisir l'image que vous voulez ajouter, de donner son nom tel que vous voulez qu'il apparaisse dans votre album et de cliquer sur \"ajouter image\".<br/><br/>Attention, la taille des images ne doit pas dépasser 2MO et les images doivent être au format .jpg.</p><p></p>";
     
    echo"<input type=\"hidden\" name=\"nom_album\" value=\"$affnom[nom_album]\">";
    echo"</td></tr>";
    echo"<tr><td class=\"inscrip\" >choisissez l'image à uploader :</td><td class=\"form1\"><input name=userfile type=file size=25></td></tr>";
    echo"<tr><td class=\"inscrip\">choisissez le nom sous-lequel va apparaître votre image dans l'album :</td><td class=\"form1\"><input type=\"text\" name=\"label\" size=\"40%\" /></td></tr>";
    echo"<tr><td class=\"inscrip\" >voulez-vous la rendre visible sur le site :</td><td class=\"form1\"><input type=\"radio\" name=\"publics\" value='true' checked >oui<input type=\"radio\" name=\"publics\" value='false'/>non</td></tr>";
    echo"<tr><td colspan=2 align=\"right\"><input type=submit name=\"action\" value=\"retour\" class=bouton><input type=submit name=\"action\" value=\"ajouter image\" class=bouton></td></tr>";
    echo"</table>";
     
     
    ?>

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Points : 85
    Points
    85
    Par défaut
    Je viens de trouver la réponse. Chez free il faut mettre ./site/img/members et pas ../site/img/members

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec la fonction fopen
    Par heeedi dans le forum Langage
    Réponses: 1
    Dernier message: 23/02/2010, 16h40
  2. problème avec la fonction fopen
    Par single dans le forum Langage
    Réponses: 5
    Dernier message: 24/03/2007, 11h40
  3. [VBS]Problème de chemin avec les " " (espace)
    Par pierre1256 dans le forum VBScript
    Réponses: 3
    Dernier message: 16/02/2006, 18h53
  4. Réponses: 1
    Dernier message: 03/11/2005, 18h44
  5. Problème de titre avec la fonction window.open
    Par kloss dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/04/2005, 18h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo