Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1572 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Upload de fichier en php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Upload de fichier en php

n°1271577
hacksi
Posté le 21-12-2005 à 22:41:39  profilanswer
 

Bonjour,
voila je voudrais pouvoir uploader des fichiers par le biais du php.
Donc pour cela, j'utilise un formulaire HTML qui appel un script PHP, mais en fait j'obtient l'erreur suivante quand je l'exécute :Warning: move_uploaded_file(): Unable to access.............................
Donc après avoir lu divers articles sur le sujet, le problème vient apparament des droit d'accès au dossier (comme le message d'erreur l'indique !). Mais j'ai tout essayé mais ya pas moyen :(
Alors quelqu'un peut-il m'aider svp ?
Merci

mood
Publicité
Posté le 21-12-2005 à 22:41:39  profilanswer
 

n°1271667
Xtina
Posté le 22-12-2005 à 10:15:47  profilanswer
 

Bonjour!
 
En effet, cela peut venir des droits
As tu fait un CHMOD 666 sur le dossier dans lequel tu veux uploader tes fichiers? (je crois que c'est 666, mais ma mémoire est un peu rouillée :( )


Message édité par Xtina le 22-12-2005 à 10:16:05
n°1271673
cinocks
Posté le 22-12-2005 à 10:31:33  profilanswer
 

Dans le fonctionnement, l'upload par un formulaire est dans un premier temps geré par Apache qui va deposer le fichier dans un repertoire de travail. Donc verifier les droits en ecriture sur ce dossier pour Apache.
 
Ensuite, verifier que PHP puisse lire ce repertoire. Et bien sur, si tu fais un move, controle le droit en ecriture sue le repertoire cible.


---------------
MZP est de retour
n°1271837
hacksi
Posté le 22-12-2005 à 15:10:58  profilanswer
 

Bon je pense que ça sera plus simple que je vous donne les sources, alors voici le formulaire :

Code :
  1. <html>
  2.     <body>
  3.         <form enctype="multipart/form-data" action="verif_upload.php" method="post">
  4.             <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
  5.             Fichier pdf : <input type="file" name="fichier" /><br>
  6.             <input type="submit" />
  7.         </form>
  8.     </body>
  9. </html>


 
et voici le script PHP :

Code :
  1. <?php
  2. if(isset($_FILES['fichier']))
  3. {
  4.   // params
  5.   unset($erreur);
  6.   $extensions_ok = array('pdf');
  7.   $taille_max = 100000;
  8.   $dest_dossier = '/var/www/free.fr/3/b/*****.******/staps/fichiers';
  9.   // vérifications
  10.   if( !in_array( substr(strrchr($_FILES['fichier']['name'], '.'), 1), $extensions_ok ) )
  11.   {
  12.     $erreur = 'Veuillez sélectionner un fichier de type pdf !'; 
  13.   }
  14.   elseif( file_exists($_FILES['fichier']['tmp_name'])
  15.           and filesize($_FILES['fichier']['tmp_name']) > $taille_max)
  16.   {
  17.     $erreur = 'Votre fichier doit faire moins de 500Ko !';
  18.   }
  19.   // copie du fichier
  20.   if(!isset($erreur))
  21.   {
  22.     $dest_fichier = basename($_FILES['fichier']['name']);
  23.     // formatage nom fichier
  24.     // enlever les accents
  25.     $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
  26.     // remplacer les caracteres autres que lettres, chiffres et point par _
  27.     $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
  28.     // copie du fichier
  29. chmod ($dest_dossier, 0777);
  30.     move_uploaded_file($_FILES['fichier']['tmp_name'], $dest_dossier . $dest_fichier);
  31.   }
  32. }
  33. ?>


Voila :)


Message édité par hacksi le 22-12-2005 à 15:12:04
n°1271887
rufo
Pas me confondre avec Lycos!
Posté le 22-12-2005 à 16:04:51  profilanswer
 

le coup du chmod dans ton script, je suis pas sûr que ce soit une bonne idée. Mieux vaut mettre les droits sur le répertoire une bonne fois pour toute et pas à chaque exécution du script. En +, si le serveur est en Windows, je ne suis pas sûr que chmod fonctionne.
Sinon, pour éviter que le script plante, tu peux tester si t'as les droits en écriture sur le répertoire de destination ; si c'est pas le cas, tu mets un message d'erreur à toi...

n°1271889
hacksi
Posté le 22-12-2005 à 16:06:25  profilanswer
 

et comment je les changent les droits directement, car j'essaye de le faire avec filezilla mais apparament les droits ne sont pas enregistrés ?

n°1271968
rufo
Pas me confondre avec Lycos!
Posté le 22-12-2005 à 17:25:05  profilanswer
 

les droits, ça serait pas plutôt 777?

n°1271975
hacksi
Posté le 22-12-2005 à 17:30:09  profilanswer
 

bin si mais comment je fais pour mettre en 777 ?

n°1271981
cinocks
Posté le 22-12-2005 à 17:41:00  profilanswer
 

euh 777 :ouch:, 666 serait dejà beaucoup mieux.


---------------
MZP est de retour
n°1271984
hacksi
Posté le 22-12-2005 à 17:43:01  profilanswer
 

ok mais bon ça me dit toujours pas comment le mettre :) ?

mood
Publicité
Posté le 22-12-2005 à 17:43:01  profilanswer
 

n°1271986
Ryoh
Posté le 22-12-2005 à 17:44:30  profilanswer
 

tu te connectes avec filezilla, tu cliques droits sur le dossier, et voilà je sais plus ce qui est marqué


Message édité par Ryoh le 22-12-2005 à 17:45:05
n°1271988
hacksi
Posté le 22-12-2005 à 17:45:40  profilanswer
 

bin c'est ce que je fais ça marche, mais quand je reclick sur le dossier pour vérifier si c'est bien appliqué, bin c'est revenu au point de départ :(

n°1271994
cinocks
Posté le 22-12-2005 à 17:51:54  profilanswer
 

tu ne peux pas faire un bon telnet ou ssh sur le serveur?


---------------
MZP est de retour
n°1271996
hacksi
Posté le 22-12-2005 à 17:52:45  profilanswer
 

lol la ça devient trop technique pour moi, je précise que j'utilise un compte free :)

n°1272063
cinocks
Posté le 22-12-2005 à 20:39:57  profilanswer
 

alors non.


---------------
MZP est de retour
n°1272789
remi-san
Posté le 24-12-2005 à 00:23:40  profilanswer
 

Ton erreur, "move_upload_files unabled to access", c'est peut-être aussi que tu donnes un répertoire qui n'existe pas. Je suis chez Free et mon upload de fichier fonctionne avec des lignes toutes simples:
 
if(isset($HTTP_POST_FILES['fichier']['tmp_name'])){
   $fichier = $_FILES['fichier']['name'];
   $tmp = $_FILES['fichier']['tmp_name'];
 
   if ( $fichier ){
      //indiquer l'url relative vers le dossier d'upload
      $chemin="image/";
      $nouveau_nom = $chemin.$fichier;
   
      if ( move_uploaded_file( $tmp , $nouveau_nom ) ) {
         echo "<br>Transfert du fichier réussi<br><br>";
         echo "<br>Pour voir votre fichier, <a href=".$nouveau_nom.">Cliquez ici</a>";
      }
      else {
         echo "Transfert échoué<br>";
      }
   }
}

n°1272917
hacksi
Posté le 24-12-2005 à 15:25:32  profilanswer
 

Je viens d'essayer avec ta solution mais j'ai toujours le même problème d'accès, alors comme fais-tu pour donner les droits d'accès à ton dossier image ?

n°1272923
hacksi
Posté le 24-12-2005 à 15:40:38  profilanswer
 

Je viens de trouver le problème, c'était juste une question de '/' où il ne fallait pas :)
Voila donc maintenant j'arrive à uploader les fichiers, j'arrive à affichier le contenu du fichier dans lequel j'upload, mais je voudrais savoir s'il est possible d'ajouter pour chaque fichier un boutton "télécharger" et un autre "supprimer" car je ne vois pas comment faire sans Base de données :)
Merci

n°1274075
remi-san
Posté le 28-12-2005 à 14:31:19  profilanswer
 

Oui, c'est possible. Utilise la fonction readdir() qui permet de lire les noms de fichiers d'un répertoire. Exemple:
 
$h=opendir("image/" );
while($file=readdir($h)) echo $file."<br>";
closedir($h);

n°1274081
hacksi
Posté le 28-12-2005 à 14:41:59  profilanswer
 

oui, ça j'ai réussi à la faire, mais ce que je voudrais savoir, c'est comment utiliser des bouttons qui font référence à un fichier ??

n°1274118
remi-san
Posté le 28-12-2005 à 16:45:06  profilanswer
 

pour ouvrir un fichier, utilise la fonction javascript window.open car tu connais le nom de tes fichiers.
 
echo "<input type=button onclick=\"javascript:window.open('".$file."','_blank')\">";


Message édité par remi-san le 28-12-2005 à 16:46:34
n°1274119
hacksi
Posté le 28-12-2005 à 16:45:59  profilanswer
 

ok merci et pour le técharger et le supprimer ?

n°1275916
rufo
Pas me confondre avec Lycos!
Posté le 02-01-2006 à 16:25:07  profilanswer
 

hacksi a écrit :

ok merci et pour le técharger et le supprimer ?


télécharger -> un simple lien hypertexte avec le bon chemin (répertoires et nom du fichier) en face de chaque fichier
Supprimer -> un bouton en face de chaque fichier qui contient le nom du fichier à supprimer (ou alors un lien vers un script .php qui prend en paramètre le nom du fichier à supprimer). Après, dans ton php, tu récupères le nom du fichier à supprimer et tu utilises la fonction unlink().

n°1275917
hacksi
Posté le 02-01-2006 à 16:25:11  profilanswer
 

ouai je suis d'accords pour le télécharger mais pour le supprimer, comment tu fais puisque ce n'est pas une base de données ? unlink sert-il à supprimer directement le fichier ?


Message édité par hacksi le 02-01-2006 à 16:34:02
n°1275922
remi-san
Posté le 02-01-2006 à 16:34:04  profilanswer
 

il te l'a dit: utilises unlink()  :hello:

n°1275924
hacksi
Posté le 02-01-2006 à 16:34:44  profilanswer
 

à ok je ne savais pas que cela servait à ça :)

n°1279472
hacksi
Posté le 09-01-2006 à 11:07:35  profilanswer
 

Pourriez-vous me donner un exemple de l'utilisation de unlink() svp

n°1279573
rufo
Pas me confondre avec Lycos!
Posté le 09-01-2006 à 14:19:50  profilanswer
 

hacksi a écrit :

Pourriez-vous me donner un exemple de l'utilisation de unlink() svp


 
va sur http://fr.php.net/ et cherche la fonction unlink. y'a juste à passer le path complet du fichier à supprimer, c'est quand même pas dur!
 

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Upload de fichier en php

 

Sujets relatifs
[ PHP ][ Resolu ] Upload et verification d'un fichier binaireUpload de fichier avec xmlhttprequest
upload fichierUpload de fichier - Copie de fichiers sur un serveur
pb Upload fichier tout bête !UPLOAD de fichier fonction ftp
upload fichier [RESOLU]Question sur upload de fichier
upload fichier. au secours!upload de fichier volumineux (8 Mo voir 10 Mo)
Plus de sujets relatifs à : Upload de fichier en php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR