par
agité » 21 oct. 2006, 06:00
En fait j'ai de gros soucis avec le script que j'ai pu trouver sur internet pour m'aider, j'arrive bien a tout configurer mais lorsque je me retrouve a vouloir modifier l'image, il ne la trouve pas dans le dossier tmp de wamp (le server HTTP que j'utilise).
Je ne comprends pas ou chercher l'image temporaire pour la modifier mon php.ini m'indique :
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = "c:/wamp/tmp"
donc je me dis que ce doit être le dossier stocker mais lors de l'envoie on me retorque que :
Warning: getimagesize(.../wamp/tmp/image.jpg.) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\xxx\xxx.php on line
j'ai le code suivant :
<?php
require ("connect.php");
if(isset($_FILES['photo']))
{
//parametres
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 400000000;
$dest_dossier = './images-site/';
$size = getimagesize("".$_FILES['photo']['tmp_name']);
$height = $size[1];
$width = $size[0];
$taille = 2000;
// On verrifie que le fichier n'est pas déjà existant
if ($handle = opendir('images-site')) {
while (false !== ($file = readdir($handle))) {
if($file == $_FILES['photo']){
$Fnm = $_FILES['photo'];
$voiture = str_replace(' ','%20%',$Fnm);
$fichier = "images-site/".$Fnm;
header("location: addphoto.php?erreur5");
exit();
}
}
}
// On verrifie les extensions
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = true;
header("location: addphoto.php?erreur1");
exit();
}
// On verrifie la taille du fichier
elseif( file_exists($_FILES['photo']['name']) and $_FILES['photo']['size'] > $taille_max)
{
$erreur = true;
header("location: addphoto.php?erreur2");
exit();
}
elseif( file_exists($_FILES['photo']['name']) and $height > $taille && $width > $taille)
{
$erreur = true;
header("location: addphoto.php?erreur3");
exit();
}
// Si ficher = bonne taille & bonne extension
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
//formatage nom fichier
//enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// On redimensionne l'image
function resize($image,$sm,$type){
GLOBAL $image,$sm_largeur,$sm_hauteur;
$path = ".../wamp/tmp/";
// obtenir la taille de l'image
$arr = getimagesize("$path$image.$type");
// initialisation de la variable largeur
$largeur=$arr[0];
// initialisation de la variable hauteur
$hauteur=$arr[1];
$facteur=($largeur/$sm);
// Vérifie si l'image est plus petite que $sm
if ($largeur < $sm){
// si vrai retourne les mêmes valeurs d'origine de l'image
$sm_largeur=$largeur;
$sm_hauteur=$hauteur;
// sinon affecte des nouvelles valeurs
} else {
$sm_largeur=($largeur/$facteur);
$sm_hauteur=($hauteur/$facteur);
}
}
$image=$_FILES['photo']['name'];
$sm=400;
$type="";
// appel de la fonction
resize("$image","$sm","$type");
// On replace le fichier dans le repertoire final
move_uploaded_file($image, $dest_dossier . $_FILES['photo']['name']);
// On remet a jour la base de donnée
$valide = "UPDATE `images` SET nom = '".$_FILES['photo']['name']."' WHERE nom = '".$_POST['pseudo']."' ";
$test = mysql_query($valide) or die("erreur ! ".mysql_error());
//Redirection sur page precedente
header("location: addphoto.php");
}
}else{
header("location: addphoto.php?erreur4");
}
?>
Il faudrait simplement retoucher l'image pour l'avoir a la bonne taille avant l'upload mais je ne sais pas pourquoi il ne me trouve pas mon image dans le dossier temporaire, une idée ?

En fait j'ai de gros soucis avec le script que j'ai pu trouver sur internet pour m'aider, j'arrive bien a tout configurer mais lorsque je me retrouve a vouloir modifier l'image, il ne la trouve pas dans le dossier tmp de wamp (le server HTTP que j'utilise).
Je ne comprends pas ou chercher l'image temporaire pour la modifier mon php.ini m'indique :
[quote]; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = "c:/wamp/tmp"[/quote]
donc je me dis que ce doit être le dossier stocker mais lors de l'envoie on me retorque que :
[quote]
Warning: getimagesize(.../wamp/tmp/image.jpg.) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\xxx\xxx.php on line [/quote]
j'ai le code suivant :
[php]<?php
require ("connect.php");
if(isset($_FILES['photo']))
{
//parametres
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 400000000;
$dest_dossier = './images-site/';
$size = getimagesize("".$_FILES['photo']['tmp_name']);
$height = $size[1];
$width = $size[0];
$taille = 2000;
// On verrifie que le fichier n'est pas déjà existant
if ($handle = opendir('images-site')) {
while (false !== ($file = readdir($handle))) {
if($file == $_FILES['photo']){
$Fnm = $_FILES['photo'];
$voiture = str_replace(' ','%20%',$Fnm);
$fichier = "images-site/".$Fnm;
header("location: addphoto.php?erreur5");
exit();
}
}
}
// On verrifie les extensions
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = true;
header("location: addphoto.php?erreur1");
exit();
}
// On verrifie la taille du fichier
elseif( file_exists($_FILES['photo']['name']) and $_FILES['photo']['size'] > $taille_max)
{
$erreur = true;
header("location: addphoto.php?erreur2");
exit();
}
elseif( file_exists($_FILES['photo']['name']) and $height > $taille && $width > $taille)
{
$erreur = true;
header("location: addphoto.php?erreur3");
exit();
}
// Si ficher = bonne taille & bonne extension
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
//formatage nom fichier
//enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// On redimensionne l'image
function resize($image,$sm,$type){
GLOBAL $image,$sm_largeur,$sm_hauteur;
$path = ".../wamp/tmp/";
// obtenir la taille de l'image
$arr = getimagesize("$path$image.$type");
// initialisation de la variable largeur
$largeur=$arr[0];
// initialisation de la variable hauteur
$hauteur=$arr[1];
$facteur=($largeur/$sm);
// Vérifie si l'image est plus petite que $sm
if ($largeur < $sm){
// si vrai retourne les mêmes valeurs d'origine de l'image
$sm_largeur=$largeur;
$sm_hauteur=$hauteur;
// sinon affecte des nouvelles valeurs
} else {
$sm_largeur=($largeur/$facteur);
$sm_hauteur=($hauteur/$facteur);
}
}
$image=$_FILES['photo']['name'];
$sm=400;
$type="";
// appel de la fonction
resize("$image","$sm","$type");
// On replace le fichier dans le repertoire final
move_uploaded_file($image, $dest_dossier . $_FILES['photo']['name']);
// On remet a jour la base de donnée
$valide = "UPDATE `images` SET nom = '".$_FILES['photo']['name']."' WHERE nom = '".$_POST['pseudo']."' ";
$test = mysql_query($valide) or die("erreur ! ".mysql_error());
//Redirection sur page precedente
header("location: addphoto.php");
}
}else{
header("location: addphoto.php?erreur4");
}
?>[/php]
Il faudrait simplement retoucher l'image pour l'avoir a la bonne taille avant l'upload mais je ne sais pas pourquoi il ne me trouve pas mon image dans le dossier temporaire, une idée ? :oops: