Voilà, je suis en train de développer un site Internet dont une partie qui sera dédiée à l'envoi de photos souvenirs, soirées en tout genre et tout.
J'ai pour cela installé un script d'upload de fichier avec un redimensionnement des images à la fin pour éviter des stocker des images trop grandes sur le serveur.
J'ai testé quelques images, pour certaines ça marche, mais pour d'autres, l'envoi ne marche pas, j'ai un message de retour qui me dit que l'image n'est pas une image jpeg. Pourtant, mon script autorise bien le Jpeg, Jpg, enfin tout ça quoi ^^
Pourriez vous regarder de plus près mon script et me dire ce qui pourrait faire déconner le script ?
Le voici :
<?php
// Dossier de destination du fichier
$folder = "images/soirees/";
// Tableau array des différents types
$allowed_types = array("image/pjpeg", "image/jpeg", "image/JPEG", "image/JPG", "image/jpg");
// Variables récupérées par methode POST du formulaire
$fname = $HTTP_POST_FILES['fichier']['name'];
$ftype = $HTTP_POST_FILES['fichier']['type'];
$fsize = $HTTP_POST_FILES['fichier']['size'];
$ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];
// Récupération des dimensions
$dim = getimagesize($ftmp);
// Diverses test afin de savoir si :
if (!in_array($ftype, $allowed_types)) // Le fichier n'est pas une image jpeg
{
echo '<p align="center">Format de fichier incorrecte. Uniquement .jpeg</p>';
}
else if(file_exists($folder."".$fname)) // Le fichier existe déjà
{
echo '<p align="center">Fichier déjà existant</p>';
}
else // Si tout va bien, c'est bien déroulé
{
// Redimensionnement
$height = 600;
$reduction = ( ($height * 100)/$dim[1] );
$width = ( ($dim[0] * $reduction)/100 );
// Création de la miniature
$source = imagecreatefromjpeg($ftmp); // La photo est la source
$folder = "images/soirees/"; // Dossier de destination de la miniature
$destination = imagecreatetruecolor($width, $height); // 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
imagejpeg($destination,''.$folder.''.$fname.'');
echo'<p align="center">Upload de l\'image Ok<br /><br />';
// Enregistrement en base de données
if(isset($_POST['description'])) $description=$_POST['description'];
else $description="";
$ID_auteur=$_POST['ID_auteur'];
$ID_parent=$_POST['ID_parent'];
$date=$_POST['date'];
$photoname=$_FILES['photo']['name'];
$description = str_replace("//'","''",addslashes($description));
$db_part = mysql_connect($localhost,$login,$password) or die('Erreur de connexion '.mysql_error());
mysql_select_db('aekbfr_gallery',$db_part) or die('Erreur de selection '.mysql_error());
$sql_part = "INSERT INTO images(ID_image, image, description, ID_auteur, date, ID_parent) VALUES('','$fname','$description','$ID_auteur','$date','$ID_parent')";
mysql_query($sql_part) or die('Erreur SQL !'.$sql_part.'<br>'.mysql_error());
echo'<script type="text/javascript">window.setTimeout("location=(\'';
if(isset($_GET['ID_parent'])) {
echo'galerie.php?ID_parent='.$_GET['ID_parent'].'';
} else {
echo'galerie.php';
}
echo'\');",0)</script>';
}
?>
Voila, voilou, l'erreur en question est le "Format de fichier incorrecte. Uniquement .jpeg".
Je ne sais pas, peut être mais dans mon script, il n'y a rien qui fait référence à une taille maximale que doit avoir l'image à l'envoi. Uniquement la hauteur maximale pour le redimensionnement...
En fait, problème résolu ! Le soucis n'apparaît qu'en local, une fois les fichiers envoyés sur le serveur, tout fonctionne à merveille ! Merci quand même de l'aide ! :D
Trouvez des réponses à vos questions sur la création de sites web, le référencement et les meilleures pratiques pour gérer un site. Échangez avec d'autres webmasters passionnés pour améliorer vos compétences en ligne et optimiser vos projets de site web.