Upload photos

Résolu
Signaler
Messages postés
22
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
7 août 2007
-
Messages postés
75
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
14 janvier 2009
-
Bonjour à tous,

  J'ai un petit probléme pour uploader les photos de mes annonces sur l'hébergeur payant que j'utilise depuis une semaine j'utilisais avant pour développer le site, l'hébergement gratuit "ifrance" et ça marchait. Et j'ai eu quelques autres bugs que je régle au fur et à mesure.

Alors que faire?  y a t-il une chose qui différe?

Mon fichier upload se trouve dans : membre/upload.php
Dites moi si vous avez besoin de plus d'informations

j'ai changé l'attribut du dossier "membre" qui était en 755 en 777
il y a un mieux la photo est enregistrée dans mon dossier et il me redirige sur ma page d'acceuil. ce que je voulais!

Par contre le script doit faire un double de la photo et la renomée et inscrire son nom dans ma table an_annonce, ce qu'il ne fait pas!

Voila la partie du script qui gére cette fonction et merci pour vos futures réponses, Cédric:

if (phpversion() > "4.0.6") {
   $HTTP_POST_FILES = &$_FILES;
}
define("MAX_SIZE",800000);
define("DESTINATION_FOLDER", "images");
define("no_error", "../index.php");
define("yes_error", "upload.php");
$_accepted_extensions_ = "jpg,jpeg,JPG,JPEG,gif,GIF";
if(strlen($_accepted_extensions_) > 0){
   $_accepted_extensions_ = @explode(",",$_accepted_extensions_);
} else {
   $_accepted_extensions_ = array();
}
if (isset($HTTP_POST_FILES['file'])){
$_file_ = $HTTP_POST_FILES['file'];
if(is_uploaded_file($_file_['tmp_name']) && $HTTP_POST_FILES['file']['error'] == 0){
   $errStr = "";
   $_name_ = $_file_['name'];
   $_type_ = $_file_['type'];
   $_tmp_name_ = $_file_['tmp_name'];
   $_size_ = $_file_['size'];
   if($_size_ > MAX_SIZE && MAX_SIZE > 0){
      $errStr = "Votre photo est trop lourde";
   }
   $_ext_ = explode(".", $_name_);
   $_ext_ = strtolower($_ext_[count($_ext_)-1]);
   if(!in_array($_ext_, $_accepted_extensions_) && count($_accepted_extensions_) > 0){
      $errStr = "l extension n est pas prise en compte";
   }
   if(!is_dir(DESTINATION_FOLDER) && is_writeable(DESTINATION_FOLDER)){
      $errStr = "La destination de la photo est incorecte";
   }
   if(empty($errStr)){
      //je supprime les accents du nom de la photo--------------------------
   function supprimeAccents($chaine){
 
      $tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ ";
 
      $replac = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn_";
 
      return(strtr($chaine,$tofind,$replac));
 
 }$_name_=supprimeAccents($_name_);
 //fin de supprimer les accents-------------------------------
// un nouveau nom pour les photos en double
$nombre=1;
    $repertoire_upload="images/";
             $nouveau_nom=$_name_."";

while (file_exists($repertoire_upload.$nouveau_nom))
{
$nombre++; // on incremente le nombre tant que le nom du fichier existe
$nouveau_nom=$nombre.$nouveau_nom;
}// fin while
 //ok j'enregistre la photo dans le dossier
if(@copy($_tmp_name_,DESTINATION_FOLDER . "/" . $nouveau_nom)){
$_POST['idannonce'];
$idannonce=$_POST['idannonce'];
mysql_select_db($database_connexion, $connexion);
 $updateSQL = "UPDATE an_annonce SET photo='$nouveau_nom' WHERE idannonce='$idannonce'";
             mysql_select_db($database_connexion, $connexion);
 $Result1 = mysql_query($updateSQL, $connexion) or die(mysql_error());

         header("Location: " . no_error);
      } else {
         header("Location: " . yes_error);
      }
   } else {
      header("Location: " . yes_error);
   }
}
}
?>

3 réponses

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello,

si je comprends bien, tu arrives à copier une image dans un répertoire, mais pas dans un autre, alors que ça marchait avant ? effectivement ça ressemble à un pb de chmod. Il faut parfois un peu de temps avant que le changement soit effectif, c'est peut-être ça.
sinon re-teste ton script en local et vois si ça vient de lui ou de l'hébergeur.

à+
Messages postés
22
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
7 août 2007

Re bonsoir,

 Et bien en fait l'image original est copiée dans le répertoire et crée une copie de l'original en la renomant dans le méme répertoire puis le nom du double doit étre enregistré dans ma base de données pour pouvoir l'appeler dans l'annonce.


 En local le script marche trés bien, comme tu le dis je vais attendre un petit moment voir si ça évolue.

Merci beaucoup Evangun et merci a tous!
Messages postés
75
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
14 janvier 2009
33
Salut, je sais pas trop d'ou viennent tes problèmes mais pour déplacer un fichier uploadé, il y a une fonction toute faite, et surtout sécurisé (meme si tu dis que ton truc marche) : move_uploaded_file.

(http://www.php.net/move_uploaded_file)