probleme avec un script d'upload

probleme avec un script d'upload - PHP - Programmation

Marsh Posté le 02-06-2005 à 14:04:22    

Bonjour
 
 
J'ai un probleme avec le script d'upload http://www.siteduzero.com/vostutos [...] =51&page=1
 
j'ai creer un dossier nommé album , a la racine de mon site avec dedans la page envoie.php
 
quand j'uploade une photo , j'ai ce message d'erreur
 
Warning: move_uploaded_file(./album/Superior%20storm%20front%207.jpg): failed to open stream: No such file or directory in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/album/envoie.php on line 31
 
Warning: move_uploaded_file(): Unable to move '/tmp/php4tRduf' to './album/Superior%20storm%20front%207.jpg' in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/album/envoie.php on line 31
- Impossible d'enregistrer le fichier, contacter le webmaster!
n
 
 
 
voilà la ligne 31
 
move_uploaded_file($f1_tmpname, "./album/{$f1_name}" ) or $infos .= "- Impossible d'enregistrer le fichier, contacter le webmaster!<br>n";
 
 
apparament le chemin ne serait pas bon , je comprend pas. J'ai chmoder le dossier et le fichier en 777


Message édité par wydook le 02-06-2005 à 15:07:02
Reply

Marsh Posté le 02-06-2005 à 14:04:22   

Reply

Marsh Posté le 02-06-2005 à 15:51:32    

le problème c'est qu'avec ton './album/...." le script va rechercher un repertoire album à partir de l'emplacement ou il se trouve.
C'est à dire qu'il va chercher un repertoire album dans le repertoire "/home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/album/" et non dans le repertoire
"/home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/"
en considerant que web est ta racine web.
Pourquoi ne pas préciser l'arborescence totale dans ton move_uploaded_file?
$arbo="/home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web";
move_uploaded_file($f1_tmpname,"$arbo/album/{$f1_name}" ) or .....
???

Reply

Marsh Posté le 02-06-2005 à 16:04:34    

en faisant comme tu dit ca marche. J'ai donc ca
 

Code :
  1. <?PHP
  2. //Initialisation de la variables $infos
  3. $infos = '';
  4. //Initialisation des variables du formulaire (mise à '' si elles sont vides)
  5. empty($_POST['pseudo']) ? $pseudo = '' : $pseudo = $_POST['pseudo'];
  6. empty($_POST['titre']) ? $titre = '' : $titre = $_POST['titre'];
  7. //Vérification du pseudo et du titre
  8. if ($titre == '') $infos .= "- Vous devez définir un titre!<br>n";
  9. if ($pseudo == '') $infos .= "- Vous devez entrer votre pseudo!<br>n";
  10. //Pour savoir si le fichier a été uploadé, on vérifie que le fichier est bien dans le tableau des fichiers
  11. if (!empty($_FILES['fichier1']['size'])){
  12. //On récupère la taille, le nom et le nom du fichier temporaire
  13. $f1_size = $_FILES['fichier1']['size'];
  14. $f1_name = $_FILES['fichier1']['name'];
  15. $f1_tmpname = $_FILES['fichier1']['tmp_name'];
  16. //Récupération de l'extension du fichier (on prend ce qui suit le dernier point et on le met en minuscule
  17. $ext = strtolower(substr($f1_name,strrpos($f1_name, "." )+1));
  18. //Création du tableau des extensions acceptées
  19. $valides = array("bmp","jpg","gif","png","tif","wbmp" );
  20. //On vérifie la taille et le type de fichier
  21. if ($f1_size > 1000000) $infos .= "- Le fichier est trop volumineux!<br>n";
  22. if (!in_array($ext,$valides)) $infos .= "- Ce type de fichier n'est pas accepté!<br>n";
  23. //Si tout est bon (aucune erreur dans $infos), on déplace le fichier
  24. if ($infos == ''):
  25. $arbo="/home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web";
  26. move_uploaded_file($f1_tmpname,"$arbo/album/{$f1_name}" )  or $infos .= "- Impossible d'enregistrer le fichier, contacter le webmaster!<br>n";
  27. if ($infos == ''){
  28.   $res = mysql_connect('localhost','','');
  29.   mysql_select_db('',$res);
  30.   $add = mysql_query("INSERT INTO uploads VALUES ('','{$titre}','{$pseudo}','{$f1_name}',{$f1_size});" );
  31. }
  32. endIf;
  33. }else $infos .= "- Vous devez sélectionner un fichier à uploader!<br>n";
  34. //Si le formulaire n'a pas encore été validé, on n'affiche pas les erreurs
  35. if (empty($_POST['MAX_FILE_SIZE'])) $infos = '';
  36. //Si il y a eu une erreur ou si le formulaire n'a pas encore été validé (Facile à savoir, tant que le formulaire n'est pas validé, MAX_FILE_SIZE est vide), on l'affiche
  37. if ($infos != '' || empty($_POST['MAX_FILE_SIZE'])):
  38. //Affichage des informations d'erreur au début du formulaire
  39. ?>
  40. <span style="color:red"><?PHP echo $infos; ?></span><br>
  41. <form name="envoie" method="post" action="envoie.php" enctype="multipart/form-data">
  42. Pseudo: <input type="text" name="pseudo" size="30" maxlength="30" value="<?PHP echo $pseudo; ?>"><br>
  43. Titre du fichier: <input type="text" name="titre" size=30 maxlength=50 value="<?PHP echo $titre; ?>"><br>
  44. <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
  45. Fichier: <input type="file" name="fichier1"><br>
  46. <input type="submit" value="Envoyer!">
  47. </form>
  48. <?PHP ENDif;
  49. if ($infos == '' && !empty($_POST['MAX_FILE_SIZE'])){
  50. ?>
  51. BRAVO, transfer réussi!
  52. <?PHP } ?>


 
 
 
 
 
Il me met bien transfert reussi , et dan sla base le fichier y est. Mais ou ce trouve le fichier pour que je puisse la voir ?

Reply

Marsh Posté le 02-06-2005 à 16:07:52    

dans le repertoire :
/home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/album/
 
et si tu veux voir ton image, tu peux tout simplement taper :  
(en considerant que web est ton repertoire racine )
<img src="/album/mon_fichier.jpg">

Reply

Marsh Posté le 02-06-2005 à 16:15:23    

Ok , merci beaucoup je te remercie. Quand a moi je vais essayer de voir comment je peut faire pour creer des miniatures de ces images uploader . Si t'as la solution merci de me le faire savoir .
 
 
@+++++ et merci

Reply

Marsh Posté le 02-06-2005 à 16:39:27    

quelque chose comme ca :
tu créés un repertoire small dans le repertoire album.
Ensuites tu créé un fichier album.php dans le repertoire album et copies ca, normalement il doit t'afficher des vignettes de 80 px de larges, et par serie de 10.....
il se charge tout seul de faire la vignette si elle n'existe pas :
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 
<html>
<head>
        <title>Liste des images</title>
<style type="text/css">
body {background-color:black;color:white;}
a {color:white}
.sp a {color:black}
b {font-size:larger;font-weight:bold;}
.sp {margin:8px;float:left; height:200px;width:180px;border: 1px solid white;text-align:center;background-color:#DADADA;}
table {margin:0px;padding:0px;cell-spacing:0px;border:none}
.img {margin:2px}
</style>
</head>
<body>
<div style="width:100%;align:enter;text-align:center;">
<div style="width:1000px;border:solid white 1px;margin:auto;text-align:center;">
<?php
function small_img($img,$width=80) {
 $toto=getimagesize($img.".jpg" );
 $h=$width/$toto[0]*$toto[1];
 $src = imagecreatefromjpeg($img.".jpg" );
 
   $dest = imagecreatetruecolor($width, $h); // creation de l'image de destination
 
 imagecopyresized ($dest ,$src, 0,0,0,0, $width, $h, $toto[0],$toto[1]);
 imagejpeg($dest, "small/".$img.".jpg" );
}
  $handle=opendir('/home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/album/');
 
  while ($file = readdir($handle)) {
    if (substr($file,strlen($file)-3)=="jpg" && substr($file,0,1)!="O" )
  $f[]=substr($file,0,strlen($file)-4);
  }
  closedir($handle);
  if (!isset($list)) $list=1;
  $total=count($f);
  $fin=(($list*10)<=$total)?($list*10):$total;
  for ($i=(0+($list-1)*10);$i<$fin;$i++) {
    echo "<span class=\"sp\">";
    if (!file_exists("small/".$f[$i].".jpg" )) {
         small_img($f[$i]);
    }
    echo"<a href=\"album.php?img=".$f[$i]."\"  target=\"album\"><img src=\"small/".$f[$i].".jpg\" width=\"80\" border=\"0\"  class=\"img\"><br>
    ".$f[$i]."
    </a></span>\n";
 
  }
  echo"</div>";
  if ($total>10) {
  echo"<br><br><div style=\"align:center;text-align:center;clear:left\"><hr width=50%>";
      $mod=(($total/10)>round($total/10,0))?round($total/10,0)+1:round(($total/10),0);
      for ($i=1;$i<=$mod;$i++) {
            echo"<a href=\"album.php?list=$i\">"; if ($list==$i) echo"<b>"; echo"Page $i"; if ($list==$i) echo"</b>"; echo"</a>";
            if ($i!=$mod) echo" | ";
 
      }
  echo"</div>";
 
  }
?>
</div>
</body>
</html>
 

Reply

Marsh Posté le 02-06-2005 à 17:06:47    

impecc , mais encore un souci.
 
l'url dela page ou s'affiche les vignettes est du style
http://www.monsite.com/album/album.php
 
et quand je clique sur une vignette une page s'ouvre et son url est du style:
http://www.monsite.com/album/album [...] rnadoes300
 
le probleme c'est que l'image est en migniature aussi.
Est il possible de la voir en grand ?

Reply

Marsh Posté le 02-06-2005 à 17:13:34    

oups j'ai fait une petite erreur!
en effet remplace
 
    echo"<a href=\"album.php?img=".$f[$i]."\"  target=\"album\"><img src=\"small/".$f[$i].".jpg\" width=\"80\" border=\"0\"  class=\"img\"><br>
    ".$f[$i]."
    </a></span>\n";
 
par :
    echo"<a href=\"image.php?img=".$f[$i]."\"  target=\"album\"><img src=\"small/".$f[$i].".jpg\" width=\"80\" border=\"0\"  class=\"img\"><br>
    ".$f[$i]."
    </a></span>\n";
 
 
et tu créés un fichier nommé image.php toujours dans le repertoire album et qui contient ca :
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title><?=$img?></title>
<style type="text/css">
body {background-color:black}
.img {margin:2px}
</style>
</head>
<body>
<?
echo"<img src=\"$img.jpg\">";
?>
</body>
</html>


Message édité par el_gaucho le 02-06-2005 à 17:14:20
Reply

Marsh Posté le 02-06-2005 à 17:37:25    

Merci beaucoup.  Tout marche super bien.
 
Passes une bonne soirée A+++


Message édité par wydook le 02-06-2005 à 17:37:39
Reply

Marsh Posté le 02-06-2005 à 17:56:24    

re
 
une dernier petite  
question est ca sera bon.
 
 
 
 comment puis je faire pour que les images uploader ne depassent pas 800x600 et que ce soit uniquement des .jpeg , .png ?
 
dans ce fichier
 

Code :
  1. <?PHP
  2. //Initialisation de la variables $infos
  3. $infos = '';
  4. //Initialisation des variables du formulaire (mise à '' si elles sont vides)
  5. empty($_POST['pseudo']) ? $pseudo = '' : $pseudo = $_POST['pseudo'];
  6. empty($_POST['titre']) ? $titre = '' : $titre = $_POST['titre'];
  7. //Vérification du pseudo et du titre
  8. if ($titre == '') $infos .= "- Vous devez définir un titre!<br>n";
  9. if ($pseudo == '') $infos .= "- Vous devez entrer votre pseudo!<br>n";
  10. //Pour savoir si le fichier a été uploadé, on vérifie que le fichier est bien dans le tableau des fichiers
  11. if (!empty($_FILES['fichier1']['size'])){
  12. //On récupère la taille, le nom et le nom du fichier temporaire
  13. $f1_size = $_FILES['fichier1']['size'];
  14. $f1_name = $_FILES['fichier1']['name'];
  15. $f1_tmpname = $_FILES['fichier1']['tmp_name'];
  16. //Récupération de l'extension du fichier (on prend ce qui suit le dernier point et on le met en minuscule
  17. $ext = strtolower(substr($f1_name,strrpos($f1_name, "." )+1));
  18. //Création du tableau des extensions acceptées
  19. $valides = array("bmp","jpg","gif","png","tif","wbmp" );
  20. //On vérifie la taille et le type de fichier
  21. if ($f1_size > 1000000) $infos .= "- Le fichier est trop volumineux!<br>n";
  22. if (!in_array($ext,$valides)) $infos .= "- Ce type de fichier n'est pas accepté!<br>n";
  23. //Si tout est bon (aucune erreur dans $infos), on déplace le fichier
  24. if ($infos == ''):
  25. $arbo="/home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web";
  26. move_uploaded_file($f1_tmpname,"$arbo/album/{$f1_name}" )  or $infos .= "- Impossible d'enregistrer le fichier, contacter le webmaster!<br>n";
  27. if ($infos == ''){
  28.   $res = mysql_connect('localhost','','');
  29.   mysql_select_db('',$res);
  30.   $add = mysql_query("INSERT INTO uploads VALUES ('','{$titre}','{$pseudo}','{$f1_name}',{$f1_size});" );
  31. }
  32. endIf;
  33. }else $infos .= "- Vous devez sélectionner un fichier à uploader!<br>n";
  34. //Si le formulaire n'a pas encore été validé, on n'affiche pas les erreurs
  35. if (empty($_POST['MAX_FILE_SIZE'])) $infos = '';
  36. //Si il y a eu une erreur ou si le formulaire n'a pas encore été validé (Facile à savoir, tant que le formulaire n'est pas validé, MAX_FILE_SIZE est vide), on l'affiche
  37. if ($infos != '' || empty($_POST['MAX_FILE_SIZE'])):
  38. //Affichage des informations d'erreur au début du formulaire
  39. ?>
  40. <span style="color:red"><?PHP echo $infos; ?></span><br>
  41. <form name="envoie" method="post" action="envoie.php" enctype="multipart/form-data">
  42. Pseudo: <input type="text" name="pseudo" size="30" maxlength="30" value="<?PHP echo $pseudo; ?>"><br>
  43. Titre du fichier: <input type="text" name="titre" size=30 maxlength=50 value="<?PHP echo $titre; ?>"><br>
  44. <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
  45. Fichier: <input type="file" name="fichier1"><br>
  46. <input type="submit" value="Envoyer!">
  47. </form>
  48. <?PHP ENDif;
  49. if ($infos == '' && !empty($_POST['MAX_FILE_SIZE'])){
  50. ?>
  51. BRAVO, transfer réussi!
  52. <?PHP } ?>


Message édité par wydook le 02-06-2005 à 17:57:03
Reply

Marsh Posté le 02-06-2005 à 17:56:24   

Reply

Marsh Posté le 03-06-2005 à 09:58:38    

wydook a écrit :

re
 
une dernier petite  
question est ca sera bon.
 
 
 
 comment puis je faire pour que les images uploader ne depassent pas 800x600 et que ce soit uniquement des .jpeg , .png ?
 
dans ce fichier
 


et bien ceci devrait etre suffisant :
 
if ($my_img=getimagesize($f1_tmpname)) {
   if(($my_img[0]*$my_img[1])>(800*600)) {
     ma taille d'image trop grande (800*600)
   }
   if ($my_img[2]!='PNG' && $my_img[2]!='JPG'){
     mon fichier n(est ni un png ni un jpeg
   }
} else {
 mon fichier n'est pas une image valide (attention au chemin d'acces de $f1_tmpname)
}
  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed