Upload de photo sur son site

Fermé
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 - 16 août 2009 à 22:07
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 - 18 août 2009 à 19:16
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
A voir également:

11 réponses

niconovice Messages postés 954 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 3 mars 2014 86
16 août 2009 à 22:16
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
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
16 août 2009 à 22:25
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
niconovice Messages postés 954 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 3 mars 2014 86
16 août 2009 à 22:28
celui que tu veux mais en un mot c'est mieux =)
0
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
16 août 2009 à 22:40
ok
donc imagejpeg($destination, 'mini_couchersoleil.jpg');
avant destionation je met par exemple images
ce qui donne
imagejpeg(images/$destination, 'mini_couchersoleil.jpg');
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
niconovice Messages postés 954 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 3 mars 2014 86
16 août 2009 à 22:45
evites "images j'ai cru voir que tu avais dejà un dossier de ce nom, essaye plutot quelque chose comme "PhotosRedim"
0
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
16 août 2009 à 22:48
ok alors je mai PhotosRedima la place de images

je vai tester
0
niconovice Messages postés 954 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 3 mars 2014 86
16 août 2009 à 22:54
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
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
16 août 2009 à 22:58
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
niconovice Messages postés 954 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 3 mars 2014 86
16 août 2009 à 22:59
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
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
16 août 2009 à 23:18
ok je vais regarder ca de plus pres deamon
merci pour ton aide a++
0
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
18 août 2009 à 19:16
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