Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Rutkowski, 1 utilisateur anonyme et 15 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

[PHP] Upload -> Oskour

 
n°679
grouiiinku​s
Mahna mahna
Profil : Habitué
Posté le 27-06-2002 à 11:25:58  profilanswer
 

:hello:  
C'est à moi de poser une question ;)  
 
Bon je fais un site pour une personne qui m'est chère :love:
et je dois faire de l'upload de fichiers.
 
J'ai d/l un code PHP, j'ai regardé comment ca fonctionne...
J'ai fait mon code PHP, publié -> ca marche po. :(  
 
Bon, kaisskeujéhenkorfé ? :x  
Je vérifie, trouve qq erreurs, corrige -> marche tjrs po. :(  
 
J'installe carrément le code que j'avais d/l et qui marche -> marche po non plus. :(  
 
Re-vérification, pas trouvé d'erreur. On dirait que le serveur refuse d'uploader <TILT!> :fou:  
Vérification options PHP: upload_max_filesize = 0  :eek:  
:nrv: ca fait une plombe que je cherche. Grr (fo pas gonfler, gérard lambert, quand il répare sa mobylette :D ).
 
Bon, c'est officiel: je hais multimania. :roule:
 
Voici donc mes questions:
 
1) A priori, avec upload_max_filesize = 0, ca peut po marcher, hein ?
2) Dans Configure Command, j'ai vu '--disable-ftp' , dans ce cas, les intructions PHP d'accès au FTP seraient désactivées ?
3) Marre de multimania -> chez free, l'uploadationnementurage facon METHOD="POST"   ENCTYPE="multipart/form-data", et move_uploaded_file fonctionnera-t-il ? si non, chez qui cela marchera ?
 
Merci à tous d'avance ;)  
 :jap:


Message édité par grouiiinkus le 16-08-2002 à 19:22:58
n°690
Zebra3
Very nice !
Profil : Super Administrateur
Posté le 27-06-2002 à 17:55:18  profilanswer
 

pr répondre à tes questions :
1/ non ça peut pas marcher comme ça :(
2/ oui re-:(
3/ là g un peu plus de mal à te répondre pr ne plus avoir rien fait chez free depuis des lustres mais la dernière fois que g testé ça marchait encore (il y a plus d'un an :/) kk1 de + au courant pourras sûrement te répondre...

n°691
grouiiinku​s
Mahna mahna
Profil : Habitué
Posté le 27-06-2002 à 19:17:41  profilanswer
 

Merci Zebra3  :jap:  
 
Je suis en train de tester sur Free, et ca marche tjrs pas... mais là c'est mon code ;)  
 
Le voici:
 
[quote]
<HTML><BODY><CENTER>
 
<?
// Taille max des fichiers (octets)
$MFS=102400;
// Répertoire de stockage
$rep="images/articles/";
 
if($userfile_size>0) {
   $savefile= $rep.$userfile_name;
   if (!copy($userfile, $savefile)) { ?>
      <b>Votre fichier a bien été enregistré !</b>
   } else { ?>
      <b>Erreur d'enregistrement !</b>
   <? }
 
} elseif($userfile) { ?>
   <b>Trop gros fichier !</b>
   <i>( <? echo $MFS;?> octets max.)</i>
<? } ?>
   
<FORM METHOD="POST"
      ENCTYPE="multipart/form-data">
   <INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE
      VALUE=<? echo $MFS;?>>
   <INPUT TYPE=FILE NAME="userfile"><BR>
   <INPUT TYPE=SUBMIT value="Enregistrer le fichier">
</FORM>
 
</CENTER></BODY></HTML>
[/citation]
Qu'est-ce qui va pas la dedans ? :?  
Je vois pas ?   :sweat:  
 
Si quelqu'un pouvais m'aider, ce serait sympa  8)  :jap:

n°692
Zebra3
Very nice !
Profil : Super Administrateur
Posté le 27-06-2002 à 19:25:35  profilanswer
 

le truc que je vois c'est le truc classique lors de l'upload des fichiers : as tu les droit d'écrire dans le rep ds lequel tu veux mettre l'image ? en effet le serveur web tourne souvent avec un utilisateur différent de celui que tu utilise pour te connecter en ftp à ton compte et tu n'as dc pas le droit d'écrire ds le rep. Pour corriger ça avec ton logiciel de ftp change les permissions du répertoire cible (chmod 777 ou cases à cacocher etc. selon le logiciel)

n°693
grouiiinku​s
Mahna mahna
Profil : Habitué
Posté le 27-06-2002 à 19:49:29  profilanswer
 

Je suis en 755 :( ( pas u/l, en effet )
pas moyen de corriger, le serveur veut pas.
 
Tant pis, je vais essayer le ftp_connect ;)  
 
Merci Zebra :jap:

n°730
Nodashi
Silence je dors
Profil : Dinosaure
Posté le 30-06-2002 à 14:48:18  profilanswer
 

Moi je vais utiliser ca pour le site ke je suis en train de dev
 
[code:1:3bfc402cd1]
<?php
// set up basic connection
$conn_id = ftp_connect($ftp_server);  
 
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);  
 
// check connection
if ((!$conn_id) || (!$login_result)) {  
        echo "FTP connection has failed!";
        echo "Attempted to connect to $ftp_server for user $ftp_user_name";  
        die;  
    } else {
        echo "Connected to $ftp_server, for user $ftp_user_name";
    }
 
// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);  
 
// check upload status
if (!$upload) {  
        echo "FTP upload has failed!";
    } else {
        echo "Uploaded $source_file to $ftp_server as $destination_file";
    }
 
// close the FTP stream  
ftp_close($conn_id);  
?>
 
[/code:1:3bfc402cd1]

n°733
grouiiinku​s
Mahna mahna
Profil : Habitué
Posté le 30-06-2002 à 16:44:07  profilanswer
 

:jap: noda...
 
C'est justement ce que je suis en train de faire aussi...
 
Mais là, je suis sur un autre pb: faire une fenêtre javascript servant à demander à l'utilisateur distant une couleur... :/  
 
Mais ton code, je sens que ctrl c + ctrl v  8)

n°737
Nodashi
Silence je dors
Profil : Dinosaure
Posté le 30-06-2002 à 19:39:44  profilanswer
 

Grouiiinkus a écrit :

 
:jap: noda...
 
C'est justement ce que je suis en train de faire aussi...
 
Mais là, je suis sur un autre pb: faire une fenêtre javascript servant à demander à l'utilisateur distant une couleur... :/  
 
Mais ton code, je sens que ctrl c + ctrl v  8)




 
:roule:
 
pkoi refaire des codes parfaits ???

n°742
Zebra3
Very nice !
Profil : Super Administrateur
Posté le 30-06-2002 à 22:14:34  profilanswer
 

je suis en train de finir une petite classe pour gérer les uploads d'image dans l'admin du site, je vous mettrais le code là qd ce sera fini ;)

n°744
Zebra3
Very nice !
Profil : Super Administrateur
Posté le 30-06-2002 à 23:47:23  profilanswer
 

bon ben voilà ma petite classe :)
il y a une classe de base (Upload, pour ts types de fichiers) et une autre qui en hérite (ImageUpload, pour gérer plus spécialement le simages : vérif sur poids et taille image)
 
[code:1:a35a8a13c8]
class Upload
{
 // variables
 var $Path;
 var $Extension;
 var $File  = array();
 var $ErrorMsg = array();
 
 // constructeur
 function Upload($iFile)
 {
  $this->File      = $iFile;
  $this->Path      = $iFile[tmp_name];
  $this->Extension = substr($this->File[name], strrpos($this->File[name], '.')+1, strlen($this->File[name]));
  return TRUE;
 }
 
 // vérification de la validité du fichier
 function Check()
 {
  if ( ( FALSE != @is_uploaded_file($this->File[tmp_name]) ) && ( !empty($this->Path) ) )
  {
   return TRUE;
  }
  else
  {
   $this->ErrorMsg = 'L'upload a echoué (probable dépassement du MAX_FILE_SIZE du formulaire).';
  }
 }
 
 // modification du nom du fichier
 function SetFilename($iName)
 {
  $this->File[name] = $iName . '.' . $this->Extension;
  return TRUE;
 }
 
 // deplacement du fichier vers destination
 function Move($iDestination)
 {
  if ( FALSE != @copy($this->Path, $iDestination . $this->File[name]) )
  {
   if ( FALSE != @unlink($this->Path) )
   {
    $this->Path = $iDestination . $this->File[name];
    return TRUE;
   }
   else
   {
    $this->ErrorMsg = 'Impossible de déplacer le fichier, effacement du fichier initial impossible.';
    return FALSE;
   }
  }
  else
  {
   $this->ErrorMsg = 'Impossible de déplacer le fichier, copie dans le répertoire destination impossible.';
   return FALSE;
  }
 }
 
 // copie du fichier vers destination
 function Copy($iDestination)
 {
  if ( FALSE != @copy($this->Path, $iDestination . $this->File[name]) )
  {
   return TRUE;
  }
  else
  {
   $this->ErrorMsg = 'Impossible de copier le fichier, copie dans le répertoire destination impossible.';
   return FALSE;
  }
 }
 
 // effacement du fichier
 function Delete()
 {
  if ( FALSE != @unlink($this->Path) )
  {
   return TRUE;
  }
  else
  {
   $this->ErrorMsg = 'Impossible d'effacer le fichier.';
   return FALSE;
  }
 }
 
}
 
class ImageUpload extends Upload
{
 var $ValidFormats = array('image/x-png', 'image/gif', 'image/pjpeg');
 var $Size   = array();
 var $Weight;
 
 // vérification du format du fichier
 function Check($iWeight, $iWidth, $iHeight)
 {
  if ( FALSE != Upload::Check() )
  {
   for ( $i = 0; !empty($this->ValidFormats[$i]); $i++ )
   {
    if ( $this->File[type] == $this->ValidFormats[$i] )
    {
     $iValid = 1;
     break;
    }
   }
 
   if ( isset($iValid) )
   {
    $this->Size   = @getimagesize($this->Path);
    $this->Weight = @filesize($this->Path);
 
    if ( $this->Size[0] > $iWidth )
    {
     $this->ErrorMsg = 'L'image est trop large (' . $iWidth . ' pixels maxi).';
     return FALSE;
    }
 
    if ( $this->Size[1] > $iHeight )
    {
     $this->ErrorMsg = 'L'image est trop haute (' . $iHeight . ' pixels maxi).';
     return FALSE;
    }
 
    if ( $this->Weight > $iWeight )
    {
     $this->ErrorMsg = 'L'image est trop lourde (' . $iWeight . ' Ko maxi).';
     return FALSE;
    }
   }
   else
   {
    $this->ErrorMsg = 'Le type d'image uploadée n'est pas valide.';
   }
  }
  else
  {
   return FALSE;
  }
 }
 
}[/code:1:a35a8a13c8]
 
elle a l'air de bien marche, pas trouvé de pb pr le moment si elle est bien utilisée (me suis pas encore amusé à couvrir ttes les possib d'erreurs). je l'ai pas vriament documentée ni fait de mode d'emploi mais voici qq lignes ex d'un appel à la classe lors du traitement d'un upload par l'envoi de fichier en POST (formulaire) :
 
[code:1:a35a8a13c8]
include 'class.upload.php';
$photo = new ImageUpload($_FILES[image]);
$photo->Check(102400, 320, 240); // vérif poids < 100 ko et taille < à 320x240
$photo->SetFilename('nouveau_nom';);
$photo->Move('/chemin/vers/dossier/destination/';);
[/code:1:a35a8a13c8]
voilà, si vous avez des remarques dessus, allez y ;)

n°745
m@noo
je javaïse, je phpïse ^=^
Profil : Habitué
Posté le 01-07-2002 à 10:33:36  profilanswer
 

Grouiiinkus a écrit :

 
3) Marre de multimania -> chez free, l'uploadationnementurage facon METHOD="POST"   ENCTYPE="multipart/form-data", et move_uploaded_file fonctionnera-t-il ? si non, chez qui cela marchera ?
 
Merci à tous d'avance ;)  
 :jap:




 
sauf erreur de ma part, normalement avec un move_uploaded_file le chemin du fichier destination doit être depuis la racine du serveur ouaibe ;)
donc dans le fichier de destination utiliser la variable $DOCUMENT_ROOT concacténée avec votre chemin user (là où vous avez accès via ftp et en principe accès en écriture).

n°746
Nodashi
Silence je dors
Profil : Dinosaure
Posté le 01-07-2002 à 10:37:49  profilanswer
 

Grouiiinkus a écrit :

 
3) Marre de multimania -> chez free, l'uploadationnementurage facon METHOD="POST"   ENCTYPE="multipart/form-data", et move_uploaded_file fonctionnera-t-il ? si non, chez qui cela marchera ?
 
Merci à tous d'avance ;)  
 :jap:




 
Ca marche pas chez free j'ai testé hier enfain ce matin avec zebra.
 
 :pleure:  
 
Obligé de passer chez online.net pour ce type de commande.

n°747
Zebra3
Very nice !
Profil : Super Administrateur
Posté le 01-07-2002 à 10:50:50  profilanswer
 

nodashi a écrit :

 
Ca marche pas chez free j'ai testé hier enfain ce matin avec zebra.
 
 :pleure:  
 
Obligé de passer chez online.net pour ce type de commande.




vi c malheureusement pas possible non plus chez free :( pas moyen de récup un fichier uploadé par POST.

n°793
grouiiinku​s
Mahna mahna
Profil : Habitué
Posté le 02-07-2002 à 16:08:44  profilanswer
 

Zebra3 a écrit :

 
voilà, si vous avez des remarques dessus, allez y ;)




Euh... ouais... j'ai pas compris entre  
class Upload  
et
   $photo->Delete();  
}  
:mdr: :lol:  :D   :)  :/ :sweat:  :( :pleure2: jsuinul
 
Je comprends pas encore le fonctionnement des classes, mais je m'y emploi :/
 
En tout cas, merci zebra :jap: , je vais essayer de comprendre ton code ;)  
Et puis, je l'adapterai

n°796
m@noo
je javaïse, je phpïse ^=^
Profil : Habitué
Posté le 02-07-2002 à 16:25:41  profilanswer
 

ben tu sais ce qu'est une classe d'objet ? quand même :D :roll:
c'est la même chose qu'en C++
 
 
Upload est une classe d'objet qui encapsule les propriétés caractérisant l'objet et les méthodes permettant de manipuler l'objet en question.
 
ImageUpload hérite de la classe Upload.
 
$photo = new ImageUpload($_FILES[image]) crée une instance de l'objet ImageUpload après vérification par le constructeur correspondant.
 
si ce n'est pas le cas on fait appel à la méthode delete de la classe upload héritée pour détruire le fichier envoyé via la formulaire.
 
 
le symbole '->' correspond à la notation pointée que tu retrouves en C++ ou VB et permet d'accèder au propriétés et méthodes de l'objet instancié.

n°798
grouiiinku​s
Mahna mahna
Profil : Habitué
Posté le 02-07-2002 à 16:49:31  profilanswer
 

Nan, bien sur je sais c'que c'est qu'une classe... j'en ai fréquenté à l'école maternelle ( la seule que je connaisse )  :lol:  
 
Je pige pas du tout le fonctionnement des classes PHP. jsuis réfractaire.
 
Les propriétés/mèthodes, tout ca, ca va, je pige (idem vb, etc)
 
Par contre la prog. des classes sous PHP  :?
 
Je rame. Sec.
 
Pour cet exemple: quand j'instantie $photo, kesseki ce passe ?
 
Non je rame sévére. Vraiment.
 
Et en plus, les exemples trouvés ca et là, je les comprends bien, mais ceux-ci ne servant à rien, je ne pige pas ce pourquoi c'est faire, une classe....
 
Indécrotable :pleure2:
 
Allez, ca ira mieux demain  :roll:

n°801
m@noo
je javaïse, je phpïse ^=^
Profil : Habitué
Posté le 02-07-2002 à 17:07:20  profilanswer
 

ben le problème de VB c'est que souvent on utilise les classes d'objets déjà existantes et qui masquent souvent la notion de classe d'objet.
 
Une classe d'objet permet de définir un objet en encapsulant ces propriétés et les méthodes (procédure, fonctions) permettant la modifications de l'objet (en principe via les propriétés qui le caractérisent). C'est en quelque sorte un super type qui peut être défini par le programeur afin de définir ces propres objets
 
Ensuite il faut voir l'instanciation comme une super affectation.
On lui dit de créer un nouvel objet (d'où le new avec la classe ImageUpload) et de l'affecter à la variable $photo.
 
Comme ImageUpload hérite de la classe Upload, c'est la méthode Upload de cette dernière qui va être exécuter implicitement (car elle porte le même nom que la classe Upload).
 
$this est une variable/opérateur un peu particulier qui permet de dire que l'on manipule l'objet lors de l'appel de la méthode.

n°802
grouiiinku​s
Mahna mahna
Profil : Habitué
Posté le 02-07-2002 à 17:20:06  profilanswer
 

Merci m@noo, de répondre au misérablke vermisseau inculte que je suis  ;)  
 
pour faire concret, qd on appelle  
if ( FALSE != $photo ) , $photo peut elle être FALSE à ce moment ?
a priori la function/mèthode Upload renvoie tjrs VRAI ?

n°803
m@noo
je javaïse, je phpïse ^=^
Profil : Habitué
Posté le 02-07-2002 à 17:29:59  profilanswer
 

je me suis posé la même question :D

n°805
grouiiinku​s
Mahna mahna
Profil : Habitué
Posté le 02-07-2002 à 17:46:03  profilanswer
 

m@nOO a écrit :

 
je me suis posé la même question :D




Alors, j'ai tout compris...
C'est ca qui me paraissait illogique...
Maintenant j'ai compris  :D  
 :jap:

n°806
Zebra3
Very nice !
Profil : Super Administrateur
Posté le 02-07-2002 à 18:15:57  profilanswer
 

:o  
je suis une tanche  :sweat:  
c vrai que le constructeur ne renvoie jamais d'erreur, c un test débile :o je v corriger, je mettrais le code à jour
 
edit: bon ben en fait g juste viré ce test inutile, g pas encore modifié la classe.


Aller à :
Ajouter une réponse