Upload de photo sur son site

audi68 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   -  
audi68 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J aimerais charger des photos sur mon site mais en les redimensionnant creer une image miniature de taille par exemeple de 50/50px et une plus grande de 300/300px

Les charger sur mon site je sais le fait faire en php

comme ceci

$dossier = 'images/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}

merci beaucoup de votre aide
Configuration: Vista

11 réponses

  1. niconovice Messages postés 1037 Statut Membre 86
     
    tiens j'ai ça pour toi, ça vient du site du zero ça marche nickel mais désolé j'ai pas retrouvé la page en question ^^

    <?php
    $source = imagecreatefromjpeg("couchersoleil.jpg"); // La photo est la source
    $destination = imagecreatetruecolor(200, 150); // On crée la miniature vide

    // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
    $largeur_source = imagesx($source);
    $hauteur_source = imagesy($source);
    $largeur_destination = imagesx($destination);
    $hauteur_destination = imagesy($destination);

    // On crée la miniature
    imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);

    // On enregistre la miniature sous le nom "mini_couchersoleil.jpg"
    imagejpeg($destination, 'mini_couchersoleil.jpg');
    ?>
    <img src="mini_couchersoleil.jpg" alt="Coucher de soleil" />
    0
  2. audi68 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   9
     
    meri pour ta reponse aussi rapide je vais tester

    mais j ai un petit souci avec le dossier ou ca l enregistre

    quel nom dois je donner au dossier?

    merci pour ton aide
    0
  3. niconovice Messages postés 1037 Statut Membre 86
     
    celui que tu veux mais en un mot c'est mieux =)
    0
  4. audi68 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   9
     
    ok
    donc imagejpeg($destination, 'mini_couchersoleil.jpg');
    avant destionation je met par exemple images
    ce qui donne
    imagejpeg(images/$destination, 'mini_couchersoleil.jpg');
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. niconovice Messages postés 1037 Statut Membre 86
     
    evites "images j'ai cru voir que tu avais dejà un dossier de ce nom, essaye plutot quelque chose comme "PhotosRedim"
    0
  7. audi68 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   9
     
    ok alors je mai PhotosRedima la place de images

    je vai tester
    0
  8. niconovice Messages postés 1037 Statut Membre 86
     
    j'ai essayé tout à l'heure et ça marchait impec, le seul hic est qu'il faut renommer à chaque fois ^^ et ça c'est pas terrible, je suis à moitié en train de chercher comment faire ça de manière plus vaste comme télécharger une centaine de photos direct, mais c'est pas du tout au point parce que je suis sur autre chose en même temps ^^
    ha j'oubliais, si le code ne fonctionne pas, c'est peut être que ton hébergeur à désactiver la fonction (apparemment très gourmandes en ressources).

    voilà espérons que ça marche nickel pour toi =)
    0
  9. audi68 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   9
     
    non justement ca ne fonctionne pas

    Je suis chez Ovh

    Il me donne ca comme erreur
    Warning: imagecreatefromjpeg(finish.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /homez.232/../www/admin/insert.php on line 39

    Warning: imagesx(): supplied argument is not a valid Image resource in /homez.232/.../www/admin/insert.php on line 43

    Warning: imagesy(): supplied argument is not a valid Image resource in /homez.232/.../www/admin/insert.php on line 44

    Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /homez.232/.../www/admin/insert.php on line 49

    Warning: imagejpeg(): supplied argument is not a valid Image resource in /homez.232/..../www/admin/insert.php on line 52
    0
  10. niconovice Messages postés 1037 Statut Membre 86
     
    Perso le code tel que je l'ai testé tout à l'heure avec wamp, marchait impec et quand à l'hebergeur t'es au top là ;)
    0
  11. audi68 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   9
     
    ok je vais regarder ca de plus pres deamon
    merci pour ton aide a++
    0
  12. audi68 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   9
     
    J ai un peu bidouiller et j ai reussi a ca

    <?php
    function rewrite($c)
    {
    $c = strtr($c,

    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',

    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    $c = preg_replace('`([^[:alnum:]]+)`', '_', $c);

    return strtolower($c);
    }
    if( !empty($_FILES['photo']) )
    {
    $extensionValide = array( 'jpg' , 'jpeg' , 'gif' , 'png' , 'bmp' );
    $maxSize = 2097152;
    $dirUpload = './upload/';
    $nbImg = count($_FILES['photo']['name']);

    $arrImg = array(); // Sert à stocker les infos que l'on veut garder des images et les messages

    // Vérification des images et upload si ok
    for( $i=0; $i<$nbImg; $i++ )
    {
    if( !empty($_FILES['photo']['name'][$i]) ) // && is_uploaded_file($_FILES['photo']['name'][$i]) )
    {
    // Traitement des erreurs
    if( !$_FILES['photo']['error'][$i] )
    $arrImg[$i]['upload'] = true;
    else
    {
    $arrImg[$i]['upload'] = false;
    if( $_FILES['photo']['error'][$i] == 1 )
    $arrImg[$i]['message'] = 'L\'image ' . $_FILES['photo']['name'][$i] . ' excède la taille maximale autorisée qui est de ' . floor(2097152/1024) . ' ko';
    else
    $arrImg[$i]['message'] = 'L\'image ' . $_FILES['photo']['name'][$i] . ' n\'a pu être transférée sur le serveur';
    }

    // Vérification des extensions
    if( $arrImg[$i]['upload'] && !array($ext = strtolower(pathinfo($_FILES['photo']['name'][$i], PATHINFO_EXTENSION)), $extensionValide) )
    {
    $arrImg[$i]['upload'] = false;
    $arrImg[$i]['message'] = 'L\'extension de l\'image ' . $_FILES['photo']['name'][$i] . ' n\'est pas de type autorisé';
    }
    elseif( $arrImg[$i]['upload'] )
    {
    $arrImg[$i]['ext'] = $ext;
    $arrImg[$i]['nom'] = rewrite(substr($_FILES['photo']['name'][$i], 0, -(strlen($ext)+1)));
    }

    // Vérification du mime
    if( $arrImg[$i]['upload'] && !($mime = @getimagesize($_FILES['photo']['tmp_name'][$i])) )
    {
    $arrImg[$i]['upload'] = false;
    $arrImg[$i]['message'] = 'Le fichier ' . $_FILES['photo']['name'][$i] . ' n\'est pas une image';
    }

    // Vérification de la taille
    if( $arrImg[$i]['upload'] && filesize($_FILES['photo']['tmp_name'][$i]) > $maxSize )
    {
    $arrImg[$i]['upload'] = false;
    $arrImg[$i]['message'] = 'L\'image ' . $_FILES['photo']['name'][$i] . ' dépasse ' . floor(2097152/1024) . 'ko';
    }

    //
    // Creation d'un identifiant
    $taille = 20;
    $lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
    srand(time());
    for ($f=0;$f<$taille;$f++)
    {
    $id.=substr($lettres,(rand()%(strlen($lettres))),1);
    }
    //

    // Upload si tout est ok
    if( $arrImg[$i]['upload'] )
    {
    $upload = move_uploaded_file($_FILES['photo']['tmp_name'][$i], $dirUpload . uniqid(rand()) . $arrImg[$i]['nom'] . '.' . $arrImg[$i]['ext']);

    //
    mysql_connect ('mysd', 'ddd', ddd);
    mysql_select_db ('gdddddt');

    mysql_query('INSERT INTO dddd (id, photo, url) VALUES ( "'.$id.'", "'.$_FILES['photo']['name'][$i].'", "'.$dirUpload.uniqid(rand()).$arrImg[$i]['nom'].'.'.$arrImg[$i]['ext'].'")');

    //

    if( $upload )
    $arrImg[$i]['message'] = 'L\'image ' . $_FILES['photo']['name'][$i] . ' a été transférée avec succès';
    else
    $arrImg[$i]['message'] = 'Un problème est survenu dans la tentative de transfert de l\'image ' . $_FILES['photo']['name'][$i];
    }

    }
    }

    // Résultat de l'upload
    echo "<h2>Résultat du transfert</h2>\n";
    echo "<ul>\n";
    if( !empty($arrImg) )
    {
    foreach( $arrImg as $k => $arr )
    echo '<li>' . htmlspecialchars($arrImg[$k]['message']) . "</li>\n";

    }
    else
    echo "<li>Aucune image n'a été envoyée</li>";
    echo "</ul>\n";
    }
    else
    {
    ?>
    <form name="form1" enctype="multipart/form-data" method="post" action="">
    <input type="hidden" name="MAX_FILE_SIZE" value="2097152" />
    <label>
    <input name="photo[]" type="file" id="photo1">
    </label>
    <p>
    <label>
    <input name="photo[]" type="file" id="photo2">
    </label>
    </p>
    <p>
    <label>
    <input name="photo[]" type="file" id="photo3">
    </label>
    </p>
    <p>
    <label>
    <input name="photo[]" type="file" id="photo4">
    </label>
    </p>
    <p>
    <label>
    <input name="photo[]" type="file" id="photo5">
    </label>
    </p>
    <p>
    <label>
    <input name="photo[]" type="file" id="photo6">
    </label>
    </p>
    <p>
    <label>
    <input type="submit" name="Submit" value="Envoyer">
    </label>
    </p>
    </form>
    <?php
    }
    ?>
    </body>
    </html>

    J aimerais rajouter plusieurs photos dans une base de donnée ce qui vas mais sont a chaque fois creer dans une nouve ligne

    J aimerais que dans mon tableau il y a photos 1 puis photos2 ......

    Quelq un a une idee?

    merci de votre aide
    0