upload de fichier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : upload de fichier

par artotal » 01 févr. 2007, 17:55

C'était ça, merci ;)
Je croyais qu'une fonction agissait sur le moment et je ne sais pas pourquoi je pensait ça ?
Maintenant que tu me le dit; c'est évident.

par artotal » 01 févr. 2007, 17:45

et bien le problème c'est que les images passe et sont sur le serveur en apparence c'est ok, mais l'accès en lecture est impossible et quand j'essaie de les récuperer en ftp, j'ai des fichier à 0 ko.
Sous IE on voit les croix rouge, grace au bug on peux voir que les images existe.

par Ryle » 01 févr. 2007, 17:33

J'ai l'impression d'après ton code que tu essaies de faire ton chmod avant d'avoir copier le fichier... donc forcément, il va avoir du mal à la retrouver :)

Et si tu faisais tout simplement ceci ?
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier); 
chmod ($dest_dossier . $dest_fichier, 0777); 
En revanche avant le move, tu peux faire un changement sur le dossier de destination si le coeur t'en dit
chmod ($dest_dossier, 0777); 

Mais euh.... quel intérêt de t'embêter à changer les droits du fichier si "d'ailleurs sous IE on vois les images" ?

par artotal » 01 févr. 2007, 17:20

oui, d'ailleurs sous IE on vois les images ::
http://courant-alternatif.org/admin/adm ... ublier.php
J'ai même changer le nom du repertoire pour lui attribuer un 777.
donc j'ai enlever le chmod qui me renvoie toujours une erreur de path.
      <?php
      if(isset($_FILES['photo']))
      {
	  
      // params
      unset($erreur);
      $extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'php', 'css', 'pdf', 'swf', 'fla');
      $taille_max = 1000000;
      //$dest_dossier ='C:/apachefriends/xampp/htdocs/assoc_arsys/images/';
      $dest_dossier = '/var/www/vhost/courant-alternatif.org/home/html/illustration/';
      // utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
      // vérifications
      if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
      {
      $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg et swf ou fla !';
      }
      elseif( file_exists($_FILES['photo']['tmp_name'])
      and filesize($_FILES['photo']['tmp_name']) > $taille_max)
      {
      $erreur = 'Votre fichier doit faire moins de 100000Ko !';
      }
      // copie du fichier
      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);
	 //$dossier=basename($_FILES['photo']['name']);
	 $destination_chmod= 'images/'. $dest_fichier.' La desitnation';
	 $destination_chmod_ok= 'images/'.$_FILES['photo']['name'];
	 echo 'La destination :::::::::::::::'.$destination_chmod;
	 //chmod($ajout, 0777);
	 echo '<p style="color:red;">Insérer votre image avec le mot clé images comme ci-dessous<br /> illustration/'.$_FILES['photo']['name'].'</p>';
      // copie du fichier
      $ajout=move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
	 move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
	 }
      }
      if(isset($erreur)){
      echo '<p>', $erreur ,'</p>';
      }

print "<form method=\"POST\" action=\"#\" enctype=\"multipart/form-data\">
      <!-- Limiter la taille des fichiers à 500Ko -->
      <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"1000000\" />
      <fieldset>
      <legend>Envoi de fichiers</legend>
      <!-- champs d'envoi de fichier, de type file -->
      <p><label for=\"photo\">Photo, document, script...etc :
	 Type de fichiers acceptés :<br />
	 png, gif, jpg et swf<br />
	 </label></p>
	 <p><input type=\"file\" name=\"photo\" /></p>
      <!-- bouton d'envoi -->
      <p><input type=\"submit\" name=\"envoi\" value=\"Envoyer les fichiers\" /></p>
      </legend>
      </fieldset>
      </form>";
echo "<p>Votre ip est le <span class=\"red\">".$_SERVER["REMOTE_ADDR"]."</p></span>";
?>:

par Ryle » 01 févr. 2007, 16:46

Alors que d'après l'echo imprimer la destination est bonne ?
euh.... j'en suis pas certain... je doute que le nom de ton fichier soit : $dest_fichier.' La desitnation' :)

Le dossier 'images/' est bien au même endroit que ton script ?

par artotal » 01 févr. 2007, 16:21

c'est à dire que j'ai ajouter un 777 manuellement sur le dossier par FilleZilla
puis j'ai rentrer ça :
	 $destination_chmod= 'images/'. $dest_fichier.' La desitnation';
	 echo 'La destination :::::::::::::::'.$destination_chmod;
	 chmod($destination_chmod, 0777);
Et le chmod ne trouve pas le repertoire :

Code : Tout sélectionner

Warning: chmod(): No such file or directory in /var/www/vhost/courant-alternatif.org/home/html/admin/inc_admin/upload_admin.php on line 36
Alors que d'après l'echo imprimer la destination est bonne ?
http://courant-alternatif.org/admin/art ... article=81
Quand j'envoie un fichier j'ai bien images + fichier ?
Mon hébergeur ma donné 777, mais j'ai essayer 0777

par Ryle » 01 févr. 2007, 16:01

C'est normal que cela ne fonctionne pas mieux, tu n'as pas de chmod dans ton code...... ;)

As-tu essayé avec 0777 au lieu de 777 ?
Ton fichier a-t-il bien été déplacé dans $dest_dossier lorsque tu fais le chmod ?
As-tu les droits nécessaires et suffisant sur le dossier en question ?

upload de fichier

par artotal » 01 févr. 2007, 15:55

Bonjour,
j'ai un problème au niveau des droits de fichiers enfin d'après mon hébergeur.
il m'a conseillé la fonction chmod()
j'ai donc réjouter ça au moment du déplacement du fichier
$fichier=chmod($dest_dossier . $dest_fichier, 777);
Mais sa ne fonctionne pas avec mon code
      <?php
      if(isset($_FILES['photo']))
      {
      // params
      unset($erreur);
      $extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'php', 'css', 'pdf', 'swf', 'fla');
      $taille_max = 1000000;
      //$dest_dossier ='C:/apachefriends/xampp/htdocs/assoc_arsys/images/';
      $dest_dossier = '/var/www/vhost/courant-alternatif.org/home/html/images/';
      // utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
      // vérifications
      if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
      {
      $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg et swf ou fla !';
      }
      elseif( file_exists($_FILES['photo']['tmp_name'])
      and filesize($_FILES['photo']['tmp_name']) > $taille_max)
      {
      $erreur = 'Votre fichier doit faire moins de 100000Ko !';
      }
      // copie du fichier
      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);
      // copie du fichier
      move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
      }
      }
      if(isset($erreur)){
      echo '<p>', $erreur ,'</p>';
      }
print "<form method=\"POST\" action=\"#\" enctype=\"multipart/form-data\">
      <!-- Limiter la taille des fichiers à 500Ko -->
      <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"1000000\" />
      <fieldset>
      <legend>Envoi de fichiers</legend>
      <!-- champs d'envoi de fichier, de type file -->
      <p><label for=\"photo\">Photo, document, script...etc :
	 Type de fichiers acceptés :<br />
	 png, gif, jpg et swf<br />
	 </label></p>
	 <p><input type=\"file\" name=\"photo\" /></p>
      <!-- bouton d'envoi -->
      <p><input type=\"submit\" name=\"envoi\" value=\"Envoyer les fichiers\" /></p>
      </legend>
      </fieldset>
      </form>";
echo "<p>Votre ip est le <span class=\"red\">".$_SERVER["REMOTE_ADDR"]."</p></span>";
?>
Merci