probleme d'upload vraiment bizarre

bazura1
Invité n'ayant pas de compte PHPfrance

13 août 2007, 11:52

Voila

j'ai touvé un script d'upload , mon but est de creer une miniature et de redimensionner aussi l'image pour eviter qu'elle apparaisse trop grande en 400 px. je suis hebergé sur le serveur 1&1
Mon soucis est :en jpg l'upload ne s'effectu pas des lors la photo depasse 1280 px avec des echo j'ai pu remarquer que cela bloqué a la ligne
$fichier_source = imagecreatefromjpeg($fichier_dossier1.$fichier_n_nom);// definition de l'image dont on va faire une miniature
par contre en local je peux aller a des resolution plus grande
est ce un pb de time out?
<?php	
	//////////////////////////////////////////////////////////////////////////////////////// IMAGE ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////		
$fichier_temp = $_FILES['fichier']['tmp_name'];
$fichier_nom = $_FILES['fichier']['name'];

list($fichier_larg, $fichier_haut, $fichier_type, $fichier_attr)=getimagesize($fichier_temp);// on défini les dimensions et le type du fichier
$fichier_poids_max = 2000000;// infos de contrôle du fichier
$fichier_h_max = 3000;
$fichier_l_max = 3000;
$fichier_dossier = 'mesminia/';// dossier de destination
$fichier_dossier1 = 'mesfichiers/';
$fichier_ext = substr($fichier_nom,strrpos( $fichier_nom, '.')+1);// extension du fichier
$fichier_date = date("dmyis");// on renomme le fichier
$ville=$_POST["ville"];
$fichier_n_nom = $cla.$ville.$fichier_date;
		if (!empty($fichier_temp) && is_uploaded_file($fichier_temp)) {// on vérifie s'il y a bien un fichier à uploader
		
			if (filesize($fichier_temp)<$fichier_poids_max) {// on vérifie le poids du fichier
				if (($fichier_type===1) || ($fichier_type===2) || ($fichier_type===3)) {// types de fichiers autorises 1=gif / 2=jpg / 3=png
				if (($fichier_larg<=$fichier_l_max) && ($fichier_haut<=$fichier_h_max)) {// on vérifie si l'image n'est pas trop grande
						if (move_uploaded_file($fichier_temp, $fichier_dossier1.$fichier_n_nom)) {// si le fichier est ok, on l'upload sur le serveur
							chmod ($fichier_dossier1.$fichier_n_nom, 0777);// on donne un acces total sur le fichier
								
								/*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
								création de la miniature///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
								*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
								
								$taille_max = 80;// dimension maximale largeur et hauteur comprise
								if (($fichier_larg > $taille_max) || ($fichier_haut > $taille_max)) {// si le fichier est plus grand que $taille_max on le miniaturise
									if (($fichier_haut > $taille_max) && ($fichier_haut >> $fichier_larg)) {// définition des dimensions 
									$mini_haut = 80;
									$mini_larg = 100;
									}
									else {
									$mini_haut = $taille_max;
									$mini_larg = 100;
									}
	////////////////////////////////////////////////////////////////////////////////////////////////////							// si le fichier est un .gif
									if ($fichier_type === 1){
									$fichier_source = imagecreatefromgif($fichier_dossier1.$fichier_n_nom);// definition de l'image dont on va faire une miniature
									$fichier_reduit = imagecreate($mini_larg, $mini_haut);// on prépare le fichier miniature qui accueillera l'image réduite
									$fond_blanc = imagecolorallocate($fichier_reduit, 255, 255, 255);// fond blanc pour l'image
									$fichier_larg_red = imagesx($fichier_reduit);// dimensions x et y à donner au fichier
									$fichier_haut_red = imagesy($fichier_reduit);
									$nom_fichier_reduit1 = 'mini_'.$fichier_n_nom;// on rajoute un mini_ defant le nom du fichier
									// on redimensionne l'image de base dans le fichier $fichier_reduit
									imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
									imagecolortransparent($fichier_reduit, $fond_blanc);// on rend transparent le fond blanc
									imagegif($fichier_reduit, $fichier_dossier.$nom_fichier_reduit1);// crée le fichier réduit définitif
									chmod($fichier_dossier.$nom_fichier_reduit1, 0777);// on donne un acces total sur le fichier
									}
	////////////////////////////////////////////////////////////////////////////////////									/ si le fichier est un .jpg / .jpeg
									if ($fichier_type===2){
									$qualite=80;// définition de la qualité
									$fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);// on prépare le fichier miniature qui accueillera l'image réduite	
									$fichier_larg_red = imagesx($fichier_reduit);// dimensions x et y à donner au fichier
									$fichier_haut_red = imagesy($fichier_reduit);
									
									$fichier_source = imagecreatefromjpeg($fichier_dossier1.$fichier_n_nom);// definition de l'image dont on va faire une miniature
									
									
									$nom_fichier_reduit1 = 'mini_'.$fichier_n_nom;// on rajoute un mini_ defant le nom du fichier
									// on redimensionne l'image de base dans le fichier $fichier_reduit
									imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
									imagejpeg($fichier_reduit, $fichier_dossier.$nom_fichier_reduit1, $qualite);// crée le fichier réduit définitif
									chmod($fichier_dossier.$nom_fichier_reduit1, 0777);// on donne un acces total sur le fichier
									}
	///////////////////////////////////////////////////////////////////////////////////									///////////// si le fichier est un .png
									if ($fichier_type===3){
									$fichier_source = imagecreatefrompng($fichier_dossier1.$fichier_n_nom);// definition de l'image dont on va faire une miniature
									$fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);// on prépare le fichier miniature qui accueillera l'image réduite
									$fichier_larg_red = imagesx($fichier_reduit);// dimensions x et y à donner au fichier
									$fichier_haut_red = imagesy($fichier_reduit);
									$nom_fichier_reduit1 = 'mini_'.$fichier_n_nom;// on rajoute un mini_ defant le nom du fichier
									// on redimensionne l'image de base dans le fichier $fichier_reduit
									imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
									imagepng($fichier_reduit, $fichier_dossier.$nom_fichier_reduit1);// crée le fichier réduit définitif
									chmod($fichier_dossier.$nom_fichier_reduit1, 0777);// on donne un acces total sur le fichier
									}
								}
								else {
								$nom_fichier_reduit1 = $fichier_n_nom;// si le fichier est plus petit que $taille_max pas besoin de le miniaturiser
								}
								
								/*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
								création de la normal///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
								*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
								$taille_max = 400;// dimension maximale largeur et hauteur comprise
								if (($fichier_larg > $taille_max) || ($fichier_haut > $taille_max)) {// si le fichier est plus grand que $taille_max on le miniaturise
									if (($fichier_haut > $taille_max) && ($fichier_haut >> $fichier_larg)) {// définition des dimensions 
									$mini_haut = $fichier_haut / ($fichier_larg / $taille_max);
									$mini_larg = $taille_max;
									}
									else {
									$mini_haut = $taille_max;
									$mini_larg = $fichier_larg / ($fichier_haut / $taille_max);
									}
	////////////////////////////////////////////////////////////////////////////////////////////////////							// si le fichier est un .gif
									if ($fichier_type === 1){
									$fichier_source = imagecreatefromgif($fichier_dossier1.$fichier_n_nom);// definition de l'image dont on va faire une miniature
									$fichier_reduit = imagecreate($mini_larg, $mini_haut);// on prépare le fichier miniature qui accueillera l'image réduite
									$fond_blanc = imagecolorallocate($fichier_reduit, 255, 255, 255);// fond blanc pour l'image
									$fichier_larg_red = imagesx($fichier_reduit);// dimensions x et y à donner au fichier
									$fichier_haut_red = imagesy($fichier_reduit);
									$nom_fichier_reduit = 'norm_'.$fichier_n_nom;// on rajoute un mini_ defant le nom du fichier
									// on redimensionne l'image de base dans le fichier $fichier_reduit
									imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
									imagecolortransparent($fichier_reduit, $fond_blanc);// on rend transparent le fond blanc
									imagegif($fichier_reduit, $fichier_dossier1.$nom_fichier_reduit);// crée le fichier réduit définitif
									chmod($fichier_dossier1.$nom_fichier_reduit, 0777);// on donne un acces total sur le fichier
									}
	////////////////////////////////////////////////////////////////////////////////////									/ si le fichier est un .jpg / .jpeg
									if ($fichier_type===2){
									$qualite=80;// définition de la qualité
									$fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);// on prépare le fichier miniature qui accueillera l'image réduite	
									$fichier_larg_red = imagesx($fichier_reduit);// dimensions x et y à donner au fichier
									$fichier_haut_red = imagesy($fichier_reduit);
									
									$fichier_source = imagecreatefromjpeg($fichier_dossier1.$fichier_n_nom);// definition de l'image dont on va faire une miniature
									
									$nom_fichier_reduit = 'norm_'.$fichier_n_nom;// on rajoute un mini_ defant le nom du fichier
									// on redimensionne l'image de base dans le fichier $fichier_reduit
									imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
									imagejpeg($fichier_reduit, $fichier_dossier1.$nom_fichier_reduit, $qualite);// crée le fichier réduit définitif
									chmod($fichier_dossier1.$nom_fichier_reduit, 0777);// on donne un acces total sur le fichier
									}
	///////////////////////////////////////////////////////////////////////////////////									///////////// si le fichier est un .png
									if ($fichier_type===3){
									$fichier_source = imagecreatefrompng($fichier_dossier1.$fichier_n_nom);// definition de l'image dont on va faire une miniature
									$fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);// on prépare le fichier miniature qui accueillera l'image réduite
									$fichier_larg_red = imagesx($fichier_reduit);// dimensions x et y à donner au fichier
									$fichier_haut_red = imagesy($fichier_reduit);
									$nom_fichier_reduit = 'norm_'.$fichier_n_nom;// on rajoute un mini_ defant le nom du fichier
									// on redimensionne l'image de base dans le fichier $fichier_reduit
									imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
									imagepng($fichier_reduit, $fichier_dossier1.$nom_fichier_reduit);// crée le fichier réduit définitif
									chmod($fichier_dossier1.$nom_fichier_reduit, 0777);// on donne un acces total sur le fichier
									}
								unlink ($fichier_dossier1.$fichier_n_nom);
									}
								else {
								$nom_fichier_reduit = $fichier_n_nom;// si le fichier est plus petit que $taille_max pas besoin de le miniaturiser
								}
								
																
								
								
								
								
								
									
								
						}
						// erreur
						else {?>
							<table border="0" cellpadding="0" cellspacing="0" width="870" height="100" id="table1"align="center">
							<tr><td><?echo "Le fichier n'a pas pu être uploadé<br />"; ?></td></tr>
							</table>
							<table border="0" cellpadding="0" cellspacing="0" width="870" height="100" id="table1"align="center">
							<tr><td><a href="deposerannonce.php">Retour</a></td></tr></table><?
							include("bas.php");
							exit;
							}
					}
					// erreur
					else {?>
							<table border="0" cellpadding="0" cellspacing="0" width="870" height="100" id="table1"align="center">
							<tr><td><?echo "Le fichier est trop grand<br />";?></td></tr>
							<tr><td><?echo "La résolution maximum hauteur ou largeur doit être de 1280 pixels<br />";?></td></tr>
							<tr><td><?echo "Veuillez redimmensionner votre image, merci<br />";?></td></tr>
							</table>
							<table border="0" cellpadding="0" cellspacing="0" width="870" height="100" id="table1"align="center">
							<tr><td><a href="deposerannonce.php">Retour</a></td></tr></table><?
							include("bas.php");
							exit;
						}
			
				}
				// erreur
				else {?>
							<table border="0" cellpadding="0" cellspacing="0" width="870" height="100" id="table1"align="center">
							<tr><td><?echo "Le fichier  n'a pas le bon format<br />"; ?></td></tr>
							</table>
							<table border="0" cellpadding="0" cellspacing="0" width="870" height="100" id="table1"align="center">
							<tr><td><a href="deposerannonce.php">Retour</a></td></tr></table>
							<?
							include("bas.php");
							exit;
					}
	
			}
			// erreur
			else {?>
							<table border="0" cellpadding="0" cellspacing="0" width="870" height="100" id="table1"align="center">
							<tr><td><?echo "Le fichier est trop lourd<br />"; ?></td></tr>
							</table>
							<table border="0" cellpadding="0" cellspacing="0" width="870" height="100" id="table1"align="center">
							<tr><td><a href="deposerannonce.php">Retour</a></td></tr></table>
							<?
							include("bas.php");
							exit;
					}?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 août 2007, 11:59

est ce un pb de time out?
Utilise la fonction set_time_limit() pour modifier le délai d'exécution des scripts... si cela fonctionne c'est un problème de timeout et tu l'auras résolu, si ça ne fonctionne toujours pas, c'est que le problème vient d'ailleurs....
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

13 août 2007, 22:11

tu la placerai ou exactement la fonction

bazura1
Invité n'ayant pas de compte PHPfrance

13 août 2007, 22:21

bon j'ai tenté et sans succes

up

bazura1
Invité n'ayant pas de compte PHPfrance

13 août 2007, 22:35

au pire si qq un a un script avec les memes options et qui marche a merveile c le bien venu

ViPHP
ViPHP | 2287 Messages

13 août 2007, 22:41

Ca peut venir aussi d'un manque de mémoire pour ton script (le travail sur des images est assez gourmand). essaye un
error_reporting(E_ALL);
en début de script pour voir les éventuels messages d'erreur.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

bazura1
Invité n'ayant pas de compte PHPfrance

14 août 2007, 08:27

je viens de teste et comme dab au bout 1 mn il m'affiche une page blanche et sans erreur

le fichier a bien ete upload mais cela bloq tjs au meme endroit

ViPHP
ViPHP | 5924 Messages

14 août 2007, 14:43

Essaye avec des petits fichiers pour tester.

bazura1
Invité n'ayant pas de compte PHPfrance

14 août 2007, 22:07

avec des petits fichiers ca marche mais des lors je depasse 1280 px ca foire pour les minia
et la ca me fait une image noir et au dessus 1500 plus rien

ViPHP
ViPHP | 5924 Messages

15 août 2007, 00:18

Donne les poids des fichiers. Si ca dépasse les 2Mo, c'est impossible de les uploader par http, c'est une limitation du serveur Apache et de la configuration PHP.

bazura1
Invité n'ayant pas de compte PHPfrance

15 août 2007, 08:06

nop max essayé c 1,7 mo

et une tof en 2000x2000 environ pese 1,2mo

par contre la 2 eme miniaturisation en 400px peut aller plus haut en resolution elle ne bloq pas a 1280px comme la 1er miniaturisation

bazura1
Invité n'ayant pas de compte PHPfrance

15 août 2007, 08:29

j'ai enlever le systeme de miniature et laisser que celui syteme miniature a 400 px

et en mettant tof de 2000px

voila message + photo noir

Code : Tout sélectionner

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /homepages/37/d212658822/htdocs/dep3.php on line 2143 Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'mesfichiers/chamb312150807' is not a valid JPEG file in /homepages/37/d212658822/htdocs/dep3.php on line 2143 Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /homepages/37/d212658822/htdocs/dep3.php on line 2149

ViPHP
AB
ViPHP | 5818 Messages

17 août 2007, 22:09

Voici un script de redimensionement qui fonctionne (il faut que l'image soit sur le serveur dans le répertoire PHOTO et que le répertoire PHOTO_min existe)
<?php
//script de redimensionnement pour une image jpg se trouvant sur le serveur à l'adresse suivante
$adres = 'PHOTO/maphoto.jpg';

$source = imagecreatefromjpeg("$adres"); 

// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur de l'image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);

//redimensionnement à une largeur de 400px
$rap = $hauteur_source/$largeur_source; $largeur = '400'; $hauteur = round($largeur * $rap);
$destination = imagecreatetruecolor($largeur, $hauteur);

$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, 'PHOTO_min/maphoto.jpg',100);
?>
Tu pourrais faire l'essai avec ce script simple, cela te permettrait peut-être de trouver l'origine de ton pb plus facilement.

Important: Attention avec la taille des fichiers uploadés. Bien que l'upload soit réglé à 2 Mo (maintenant c'est plutôt 8 mo) par défaut, certains serveurs rencontrent des pb à partir de 1.5 Mo voire moins même si phpinfo indique un maxupload size de 2Mo. J'ai ce pb avec l'hébergeur online.net.

Alors que chez un autre hébergeur j'ai la possibilité d'uploader des fichiers de plusieurs dizaines de Mo : j'ai testé avec succès des fichiers de 50Mo car on peut définir set_time_limit(0) en début de script et php_value upload_max_filesize et php_value post_max_size dans le fichier .htacces

ViPHP
ViPHP | 5924 Messages

17 août 2007, 22:49

De toute façon, il faut se dire que le protocole HTTP n'est pas fiable pour ce genre de choses, il n'est pas du tout adpaté.

guiµ8676
Invité n'ayant pas de compte PHPfrance

18 août 2007, 12:14

Bonjour a tous

J'ai le meme probleme que bazura1

Comment faire pour connaitre la valeur de set_time_limit?

Merci d'avance Guillaume