Aller au contenu

problème images


Sujets conseillés

Posté

Bonjour,

J'ais installé un système permettant en passant par une page d'admin de supprimer des photos sur le site et d'en mettre d'autre à la place(sans base de données). Pour supprimer pas de problèmes mais lorsque je veut en mettre une j'ais ce message d'erreur: Warning: Unable to create 'new': Is a directory in /home/fkcars/www/images.class.php on line 10

Une erreur s'est produite ! .

Voici le code:

function ajouter_image($image) {
 if (is_dir($this->repertoire)) {
   if (copy($image, $this->repertoire . $nom)) return true;
   else return false;
 } else return false;

Merci d'avance

mojosi

Posté

Tu as plusieurs possibilités.

Soit le répertoire n'est pas un répertoire,

Soit il n'a pas le droit (CHMOD) de copier des fichiers dans ce répertoire.

if (copy($image, $this->repertoire . $nom)) return true;

Est ce que $nom est défini ? Sinon, il manquera un argument à 'copy'.

Anonymus.

Posté

Bonjour,

J'envoie le script de la page d'admin. En ce qui concerne les autorisation j''ais bien mis les chmod sauf pour les dossiers images.


<?php

include("images.class.php");

function getextension($fichier) {
 $bouts = explode(".", $fichier);
 $extension = array_pop($bouts);
 return $extension;
}

if ($_POST['action'] == "ajouter") {
 if ($image && !empty($_POST['repertoire']) && !empty($_POST['mot_de_passe'])){
   if ($_POST['mot_de_passe'] == "xxxxx") {
     if ($_POST['repertoire'] == "savoirfaire" || $_POST['repertoire'] == "new" || $_POST['repertoire'] == "tuning" ||$_POST['repertoire'] == "presse") {
       $repertoire = $_POST['repertoire'];
       $extension = strtolower(getextension($image_name));
       if ($extension == "jpg" || $extension == "png" || $extension == "bmp" || $extension == "gif") {
         $imag = new images();
         $imag->repertoire = $repertoire;
         if ($imag->ajouter_image($image, $image_name)) echo "<font face=\"Verdana\">Le fichier " . $image_name . " a bien été envoyé.</font>";
         else echo "<font face=\"Verdana\">Une erreur s'est produite !</font>";
       } else echo "<font face=\"Verdana\">Extension interdite !</font>";
     } else echo "<font face=\"Verdana\">Repertoire interdit !</font>";
   } else echo "<font face=\"Verdana\">Mot de passe incorrect !</font>";
 } else echo "<font face=\"Verdana\">Formulaire incomplet !</font>";
} else if ($_POST['action'] == "supprimer") {
 if (!empty($_POST['image']) && !empty($_POST['mot_de_passe'])) {
   if ($_POST['mot_de_passe'] == "xxxxx") {
     $extension = strtolower(getextension($image));
     if ($extension == "jpg" || $extension == "png" || $extension == "bmp" || $extension == "gif" || $extension == "jpeg") {
       if (@unlink($image)) echo "<font face=\"Verdana\">L'image <b>$image</b> a bien été suprimé !</font>";
       else echo "<font face=\"Verdana\">Une erreur s'est produite !</font>";
     } else echo "<font face=\"Verdana\">Extension interdite !</font>";
   } else echo "<font face=\"Verdana\">Mot de passe incorrect !</font>";
 } else echo "<font face=\"Verdana\">Formulaire incomplet !</font>";
}

?>
<html>
<body>

<form action="admin_images.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="action" value="ajouter">
<table>
<tr>
<td><font face="Verdana">Repertoire de destination :</font></td>
<td><select name="repertoire">
<option></option>
<option value="savoirfaire">savoirfaire</option>
<option value="new">new</option>
<option value="tuning">tuning</option>
<option value="presse">presse</option>


</select></td>
</tr>
<tr>
<td><font face="Verdana">Fichier à envoyer :</font></td>
<td><input type="file" name="image"></td>
</tr>
<tr>
<td><font face="Verdana">Mot de passe :</font></td>
<td><input type="password" name="mot_de_passe"></td>
</tr>
<tr>
<td><input type="submit" value="Envoyer image"></td>
</tr>
</table>
</form>

<hr>

<form action="admin_images.php" method="post">
<input type="hidden" name="action" value="supprimer">
<table>
<tr>
<td><font face="Verdana">Image à supprimer :</font></td>
<td><select name="image">
<option></option>
<option value="">+++ presse +++</option>
<?php

$images1 = new images();
$images1->repertoire = "presse";
$images1->liste_select();

?>
<option value="">+++ savoir-faire +++</option>
<?php

$images2 = new images();
$images2->repertoire = "savoirfaire";
$images2->liste_select();

?>
<option value="">+++ tuning-news +++</option>
<?php

$images3 = new images();
$images3->repertoire = "tuning";
$images3->liste_select();

?>

<option value="">+++ new +++</option>
<?php

$images4 = new images();
$images4->repertoire = "new";
$images4->liste_select();

?>

</select></td>
</tr>
<tr>
<td><font face="Verdana">Mot de passe :</font></td>
<td><input type="password" name="mot_de_passe"></td>
</tr>
<tr>
<td><input type="submit" value="Supprimer l'image !" style="color: #FF0000;"></td>
</tr>
</table>
</form>


</body>
</html><tr>
<td><font face="Verdana">Mot de passe :</font></td>
<td><input type="password" name="mot_de_passe"></td>
</tr>
<tr>
<td><input type="submit" value="Supprimer l'image !" style="color: #FF0000;"></td>
</tr>
</table>
</form>


</body>
</html>

Merci d'avance

Posté

En fait, vraisemblablement, c'est le problème de ton $nom.

Il n'est pas défini, ce qui fait que le programme essaie de créer le fichier en lui donnant le nom du répertoire. Ce qui n'est pas possible.

Pour régler le problème, il faudrait que tu passes le nom du nouveau fichier en paramètre de la fonction, ainsi :

function ajouter_image($image,$new_nom) {
if (is_dir($this->repertoire)) {
  if (copy($image, $this->repertoire . $new_nom)) return true;

Posté

Ok mais le problème est que j'ais plusieurs répertoires en fonction de la page ou j'envoie la photo donc le nom change. Je fais comment alors?

Posté

Rebonjour,

J'ais essayé de modifier selon l'exemple qu'on m'as donné et j'ais tjours le même message d'erreur.

J'envoie à tout hasard le code du scriptimages_class.php


<?php

class images {

var $repertoire;
var $nb_par_ligne;

function ajouter_image($image,$new_nom) {
if (is_dir($this->repertoire)) {
 if (copy($image, $this->repertoire . $new_nom)) return true;
   else return false;
 } else return false;
}

function lister_repertoire() {
 $liste = array();
 if (is_dir($this->repertoire)) {
   if ($pointeur = opendir($this->repertoire)) {
     while (($fichier = readdir($pointeur)) !== false) {
       if (!is_dir($this->repertoirte . "/" . $fichier)) {
         $liste[] = $fichier;
       }
     }
     closedir($pointeur);
     return $liste;
   } else return false;
 } else return false;
}

function liste_select() {
 $liste = $this->lister_repertoire();
 for ($i = 0; $i < count($liste); $i++) {
   echo "  <option value=\"$this->repertoire/$liste[$i]\">$liste[$i]</option>\n";
 }
}

function afficher_liste() {
 $liste = $this->lister_repertoire();
 echo "<table summary=\"table d'images\">\n";
 for ($i = 0; $i < count($liste); $i++) {
   $nom = explode(".", $liste[$i]);
   $nom = str_replace("_", " ", $nom[0]);
   $nom = str_replace("-", " ", $nom);
   $nom = strtoupper(substr($nom, 0, 1)) . substr($nom, 1);
   if (round($i/$this->nb_par_ligne) == ($i/$this->nb_par_ligne)) echo "  <tr>\n";
   echo "    <td align=\"center\">" . $this->afficher_image($liste[$i]) . "<br></td>\n";
   if (round(($i+1)/$this->nb_par_ligne) == (($i+1)/$this->nb_par_ligne) || ($i+2) > count($liste)) echo "  </tr>\n";
 }
 echo "</table>\n";
}

function afficher_image($fichier) {
 return "<img src=\"" . $this->repertoire . "/" . $fichier . "\" alt=\"" . $fichier . " - " . round((filesize($this->repertoire. "/" . $fichier)/1024), 2) . " ko\">";
}

}

?>

si quelqu'un trouve la réponse ça m'aiderait.

Merci d'avance

mojosi

Posté

Bonjour Mojosi,

Il serait sympa de ta part de donner la réponse à ceux qui t'ont aidés... c'est une manière de leur faire comprendre qu'ils n'ont pas perdu leur temps en te répondant :)

Dan

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...