Page 1 sur 1

telechargement images: critical error

Posté : 27 nov. 2007, 05:26
par choubix
hello,

je ne suis pas sur que ca ait sa place a 100% ici mais comme le probleme vient d'un script en php.

voila: je retraite la taille des images jpg via un script php. je change le nom pour un nom aleatoire puis je stocke les urls dans la base et les fichiers dans un repertoire.

le soucis vient du fait que je ne peux pas les telecharger depuis le ftp!

le nom est cree sur mon disque dur mais le fichier est illisible.
par ailleurs mon client ftp me dit qu'il y a une erreur critique lors du telechargement de ces fichiers.

qq un aurait une idee svp??

merci

Posté : 27 nov. 2007, 12:20
par Ryle
Un soucis dans la création du fichier ? ... celui-ci ne doit pas être correctement enregistrer, où le pointeur n'est pas refermé, ou un détail du genre.. tu peux toujours nous montrer le code okazou :)

Posté : 27 nov. 2007, 12:57
par choubix
salut ryle,

je n'ai pas acces au code aujourd'hui. je poste ca demain.

par contre le fichier est bien enregistre sur le serveur et s'affiche correctement sur le site.
bizarre...

Posté : 27 nov. 2007, 13:10
par Ryle
Un soucis avec ton client ftp alors ?

si tu essayes avec un autre ou bêtement sous dos de te connecter ("ftp hôte_ftp" pour te connecter, "cd nom_du_dossier" pour changer de répertoire, "get nom_du_fichier" pour le dowloader), le fichier est-il lisible ? la taille est correcte ?

Posté : 28 nov. 2007, 01:25
par choubix
hello,

je poste le code ici:
<?php

session_start();

if (isset($_SESSION['level']) && $_SESSION['level'] == 2){}
else
{
$_SESSION['error'] = "3";
header('Location: ../../errors/error.php');
}

require("../../includes/config.php");
require('../../includes/functions.tpl.php');

//initiate the array in which the files names will be stored
$i = 0;
$name_array = array();
$thumb_array = array();
while(list($key,$value) = each($_FILES['image']['name']))
{
	if(!empty($value))
	{
	//$filename = $value;
	//echo $_FILES['image']['name'][$key];    
	//print "<br>$filename<br>";
	
	$uploaddir = "../../gifts"; 

	$allowed_ext = array( 'jpg', 'gif', 'png' );  
		
	$max_size = "50000"; 
	$max_height = "300"; 
	$max_width = "300"; 
	
	$upload = ''; 

	//get the file's extension
	$ext = pathinfo($_FILES['image']['name'][$key]);
	$extension = $ext['extension'];

	//compare uploaded file with authorized extensions
		if (in_array($extension,$allowed_ext)) 
		{
		//check the file's size in kb
		if($_FILES[image][size][$key] > $max_size)
		{
		echo 'File '.$key.' size is too big!;
		$upload = false;
		}
		//check the file's	dimension WxH
					if ($max_width && $max_height) 
					{
					list($width, $height, $type, $w) = getimagesize($_FILES['image']['tmp_name'][$key]);
						if($width > $max_width || $height > $max_height)
						{
						echo '<br>File '.$key.' height and/or width are too big!';
						$upload = false;	
						}
						//upload the file!			
						else
						{
							//echo $_FILES['image']['tmp_name'][$key];
							if(empty($upload) && is_uploaded_file($_FILES['image']['tmp_name'][$key]))
							{
							//create a random name for the uploaded file
							$date = date ("Ymd");
							$name = random_string();
							$uploadname = $date.'_'.$name.'.'.$extension;
							
							$name_array[] = "$uploadname";
							
							
							move_uploaded_file($_FILES['image']['tmp_name'][$key],$uploaddir.'/'.$uploadname);					
							
							$i++;
							
							$upload = true;
																		
							}
						}
									
					}
		}
		else 
			{
			print "Incorrect file extension!";
			}	
	
	}
	
}

if ($upload = true)
{
//insert fom values into database			
$fields = array_keys($_POST);

for ($i = 0; $i < count($fields); $i++)
{
$array = array($_POST[$fields[2]], $_POST[$fields[1]], $_POST[$fields[0]]);
$start = implode("-", $array);

$array = array($_POST[$fields[5]], $_POST[$fields[4]], $_POST[$fields[3]]);
$expiry = implode("-", $array);
			
$name = addslashes($_POST[$fields[6]]);	
$description = addslashes($_POST[$fields[7]]);	
$stock = $_POST[$fields[8]];
$points_redeem = $_POST[$fields[9]];
$points_play = $_POST[$fields[10]];
$type = $_POST[$fields[11]];
$link = $_POST[$fields[12]];
$advertiser = $_POST[$fields[13]];
}	
$query= ("INSERT INTO gifts (start, expiry, name, description, stock, points_redeem, points_play, type, link, pic1, pic2, pic3, pic4, pic5, pic6, thumb1, thumb2, thumb3, thumb4, thumb5, thumb6, id_advertiser) 
		  VALUES ('$start', '$expiry', '$name', '$description', '$stock', '$points_redeem', '$points_play', '$type', '$link', 'gifts/$name_array[0]', 'gifts/$name_array[1]', 'gifts/$name_array[2]', 'gifts/$name_array[3]', 'gifts/$name_array[4]', 'gifts/$name_array[5]', 'gifts/thumbs/$name_array[0]', 'gifts/thumbs/$name_array[1]', 'gifts/thumbs/$name_array[2]', 'gifts/thumbs/$name_array[3]', 'gifts/thumbs/$name_array[4]', 'gifts/thumbs/$name_array[5]', '$advertiser' )");
mysql_query($query) or die('Invalid query: ' . mysql_error());

//create thumbs:   normal size, thumbnail folder, size in pixels
createThumbs("../../gifts/","../../gifts/thumbs/",150);
 
echo 'Your file has been uploaded successfully! Yay!';
}
else
{
echo '<br>failed uploading the file';
}

?>
desole, c'est un peu indigeste...
mais je ne comprends pas pourquoi mes images redimensionnees ne sont pas telechargeables par ftp... (les thumbnails oui par contre...)

Posté : 28 nov. 2007, 11:08
par Ryle
Il n'y a pas de redimensionnement dans ce code. Au mieux il y a l'appel à la fonction createThumbs(), qui je suppose va créer ta vignette, mais dont on a pas le code.

Si le fichier uploadé est à la bonne dimension, tu le déplaces dans $uploaddir.'/'.$uploadname, sinon tu mets un message d'erreur, mais à aucun moment tu ne modifies le fichier, en tout cas pas dans ce code.

Nota :
if ($upload = true)
Affecte TRUE à la variable $upload. Ce test sera toujours vrai. L'opérateur de comparaison est "==" ;)

Posté : 28 nov. 2007, 19:17
par choubix
houla j'ai tout melange...

les thumbnails marchent nickel. par contre ce sont les fichiers initiaux qui ne fonctionnent pas.\
aucune idee du pourquoi...

merci d'avoir corrige ma syntaxe (encore une fois ;) )