Uploader des images vers un site

diabolo67 Messages postés 9 Statut Membre -  
 siskozed -
Bonjour à tous,

Je recherche un moyen qui permettrai d'uploader des images depuis n'importe quel pc vers un fichier de mon site.

Grâce à un petit script php et une base je devrai pouvoir afficher mes photos sur le site et mettre ce dernier rapidement à jour.

Pour php pas de problème (pour l'instant) c'est du coté upload d'image que je coince un peu. Quel langage de programmation utilisé pour cela , en clair comment faire ?

Si quelqu'un à une idée merci à lui.

diabolo

10 réponses

  1. dedale82 Messages postés 403 Statut Membre 283
     
    Soit le repertoire n'existe pas, soit tu n'as pas de permissions en ecriture dessus.
    Bonne soiree
    1
  2. diabolo67 Messages postés 9 Statut Membre
     
    Merci pour vos réponses,

    J'ai commencé par utilisé le script de php france. Mais j'ai déja un petit soucis.

    Voici les deux warnings que m'adresse php :
    
    Warning: move_uploaded_file(/brice/photos/ebay1.jpg): failed to open stream: No such file or directory in /home/diapason/www/brice/upload.php on line 33
    
    Warning: move_uploaded_file(): Unable to move '/tmp/phpSoYyAf' to '/brice/photos/ebay1.jpg' in /home/diapason/www/brice/upload.php on line 33
    
    
    


    Et voici le code tel que je l'ai trouvé sur le post indiqué par dedale82
    <?php
    if(isset($_FILES['photo']))
    {
      // params
      unset($erreur);
      $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
      $taille_max = 100000;
      $dest_dossier = '/brice/photos/';
      // utilisez également des slashes sous windows : $dest_dossier  = 'd:/damien/photos/';
      // vérifications
      if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
        {    
    	$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !'; 
    	}  
      elseif( file_exists($_FILES['photo']['tmp_name'])           
             and filesize($_FILES['photo']['tmp_name']) > $taille_max)  
    	{    
    	$erreur = 'Votre fichier doit faire moins de 500Ko !';  
    	}  
    	// copie du fichier  
      if(!isset($erreur))  
        {    
    	$dest_fichier = basename($_FILES['photo']['name']); 
    	// formatage nom fichier   
    	// enlever les accents 
    	$dest_fichier = strtr($dest_fichier, 
    	'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    	'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    	// remplacer les caracteres autres que lettres, chiffres et point par _ 
    	$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
    	// copie du fichier    
    	move_uploaded_file($_FILES['photo']['tmp_name'], 
    	$dest_dossier . $dest_fichier);  
    	}
    }
    ?>
    
     Désolé s'il est un peu long.
    
     Merci pour votre aide.
    
     diabolo67
    
    
    -1
  3. diabolo67 Messages postés 9 Statut Membre
     
    Bonjour,

    J'ai pas très bien compris le fonctionnement du code.
    Par exemple
    $dest_dossier = '/brice/photos/';
    

    Indique bien l'adresse du dossier qui va recevoir les images ?
    Ce dossier existe bien. Comment vérifier que j'ai bien les droits en écritures dessus ?
    Et que signifie exactement cette alerte :
    Warning: move_uploaded_file(/brice/photos/ebay1.jpg): failed to open stream: No such file or directory in /home/diapason/www/brice/upload.php on line 33


    On dirai une erreur en local ? Pourtant je fais le test depuis le site ?
    Merci pour vos réponses

    diabolo
    -1
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. diabolo67 Messages postés 9 Statut Membre
     
    En utilisant le code de StreM

    Voila les erreurs qui s'affichent
    Warning: move_uploaded_file(brice/photos/ebay1.jpg): failed to open stream: No such file or directory in /home/diapason/www/brice/trait_parent.php on line 8
    
    Warning: move_uploaded_file(): Unable to move '/tmp/phpeZrSB8' to 'brice/photos/ebay1.jpg' in /home/diapason/www/brice/trait_parent.php on line 8
    


    diabolo
    -1
  6. diabolo67 Messages postés 9 Statut Membre
     
    Bonjour ,

    J'ai réglé le probleme mon fichier doit avoir l'adresse suivante ../brice/photos.

    Je continue sur ma lancé .

    Pour permettre à l'administrateur du site de télécharger des photos, d'écrire son texte et de rajouter une mention de prix j'ai crée une page avec un formulaire pour l'ensemble.

    Les photos sont uploader dans un dossier et le reste dans ma base.
    Voici le code php :

    Code:

    <?php
    if(isset($_FILES['photo']))
    {
    // params
    unset($erreur);
    $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
    $taille_max = 100000;
    $dest_dossier = '../brice/photos/';
    // utilisez également des slashes sous windows : $dest_dossier = 'c:/brice/photos/';
    // vérifications
    if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
    {
    $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
    }
    elseif( file_exists($_FILES['photo']['tmp_name'])
    and filesize($_FILES['photo']['tmp_name']) > $taille_max)
    {
    $erreur = 'Votre fichier doit faire moins de 500Ko !';
    }
    // copie du fichier
    if(!isset($erreur))
    {
    $dest_fichier = basename($_FILES['photo']['name']);
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr($dest_fichier,
    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
    // copie du fichier
    move_uploaded_file($_FILES['photo']['tmp_name'],
    $dest_dossier . $dest_fichier);
    }

    $host = "***";
    $user = "****";
    $pass = "*****";
    $bdd = "*****";

    // connection base de données
    @mysql_connect($host, $user, $pass) or die ("Impossible de se connecter à la base de donnée");

    //selection de la base
    @mysql_select_db($bdd) or die ("Impossible de se connecter à la base");

    // Requête modifiée (problème de syntaxe)
    $sql=mysql_query("INSERT INTO brice VALUES ('' , '$text', '$prix', )") or die ("Erreur dans la requête ".$sql."<br />".mysql_error());

    header("location: confirmationupload.php");

    }
    ?>

    J'ai une erreur sql ligne 1 et je vois pas ce que sa peux être.

    Merci pour votre aide

    diabolo
    -1
  7. diabolo67 Messages postés 9 Statut Membre
     
    J'en suis toujours au même point personne n'a une petite idée ?

    diabolo
    -1
  8. StreM Messages postés 515 Statut Membre 124
     
    Tu n'arrives pas a te connecter a ta BDD ?
    ligne1, tu n'as pas de SQL, tu as que du PHP, alors je comprends pas ton erreur...
    -1
  9. siskozed
     
    si ca arrive à quelqu'un un jour, il sera content de savoir d'ou ca vient :

    En fait, il ne créé pas le dossier automatiquement. Il faut le créer manuellement. Avec la fonction

    mkdir('./repertoire parent/'.$id.'/', 0777);

    mkdir ( 'répertoire', droits ) pour les droits c'est comme sous linux avec le chmod (777 accès total)

    voilà apres, ca coule tout seul !!
    -1
  10. StreM Messages postés 515 Statut Membre 124
     
    $uploaddir = 'photos/';
    $uploadfile = $uploaddir . basename($_FILES['Fichier']['name']);
    
    		if (isset ($_FILES['Fichier']['tmp_name']) && $_FILES['Fichier']['tmp_name'] != "none") {  
    			if (!file_exists($uploadfile)) {
    				if (move_uploaded_file($_FILES['Fichier']['tmp_name'], $uploadfile)) { 
    					
    	  
    					//creation mini
    					$src_img = imagecreatefromjpeg($uploadfile);
    					$size = GetImageSize($uploadfile);
    					$dst_img = imagecreatetruecolor($cote_mini,$cote_mini);
    					imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $cote_mini, $cote_mini, $size[0], $size[1]);
    					imagejpeg($dst_img, $uploaddir."thumbs/".basename($_FILES['Fichier']['name']), 75);
    					imagedestroy($src_img);
    					imagedestroy($dst_img); 
    					
    					//redimensionnement image
    					$haut = "500";
    					$larg = $size[0]*$haut/$size[1];
    					$src_img = imagecreatefromjpeg($uploadfile);
    					$size = GetImageSize($uploadfile);
    					$dst_img = imagecreatetruecolor($larg,$haut);
    					imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $larg, $haut, $size[0], $size[1]);
    					imagejpeg($dst_img, $uploadfile, 75);
    					imagedestroy($src_img);
    					imagedestroy($dst_img);
    					
    					echo "Fichier envoyé !</body>";
    				}
    			}
    			else
    				{echo "<font color=red>Un fichier portant le même nom existe déja.</font>";}
    		}

    Avec un formulaire comme ca :
    <FORM ENCTYPE="multipart/form-data" ACTION="trait_parent.php" METHOD="POST"> 
    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="2097152" class=input> 
    Titre de la photo :   
    <INPUT NAME="titre_tof" TYPE="text" class=input><br>
    Fichier : 
    <INPUT NAME="Fichier" TYPE="file" class=input>  (max : 2Mo)
    <br><br>
    <INPUT TYPE="submit" VALUE="Envoyer" name=bouton
    onClick="this.form.submit();this.disabled=true;this.value=\'Envoi en cours...\'" class=input>
        </center> 
    </FORM>
    -2