webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 2009
-
18 janv. 2008 à 09:06
glums
Messages postés1Date d'inscriptionmercredi 15 septembre 2004StatutMembreDernière intervention19 avril 2013
-
19 avril 2013 à 17:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
glums
Messages postés1Date d'inscriptionmercredi 15 septembre 2004StatutMembreDernière intervention19 avril 2013 19 avril 2013 à 17:23
salut !
Bravo pour le travail ! :)
J'utilise la classe 'Brut de Pomme', comme idem exemple donné, je suis avec liaison Mysql.
Pas de souci pour la copie de l'image uploadée dans le bon dossier avec le nouveau nom, en revanche, impossible de récupérer le nom de la nouvelle image crée, pour l'intégrer dans ma base de donnée.
J'ai rajouté au formulaire un champs avec name 'image' en type 'hidden' qui est censé récupérer le nom de l'image et crée une variable '$image' qui tente de pioché le nom de la nouvelle image. j'ai beau tourner autour de toutes les étapes de la classe, je n'y arrive pas. Je dois surement mal mis prendre, car je débute ma première appli...
Si quelqu'un de plus pointu peut m'orienter c'est cool !
cs_Occi
Messages postés4Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention30 janvier 2010 30 janv. 2010 à 16:45
Beau code !
Sinon je ne suis également pas très fan des Exeptions (peut être à tord).
dimitr1
Messages postés1Date d'inscriptionjeudi 16 octobre 2008StatutMembreDernière intervention 1 janvier 2010 1 janv. 2010 à 15:16
Salut,
Belle classe, beau travail. J'utilise moi-même une classe de ce genre.
Juste deux remarques rapides :
- certaines fonctions ne devraient pas, à mon sens, être intégrées dans la classe d'upload. C'est le cas par exemple de "cleanFileName" et de "renameFile". Ces fonctionnalités dépassent en effet l'upload et devraient pouvoir être appelées depuis d'autres classes. Personnellement, j'ai une classe "file" statique qui implémente ce type de fonctions et que j'utilise au besoin depuis ma classe d'upload, mais aussi depuis d'autres classes.
- je ne suis pas fan de la gestion d'erreurs via les exceptions dans ce cas. Pour moi, une exception est lancée lorsqu'un problème inattendu et rare survient (SGBDD HS, par exemple). Envoyer un fichier trop volumineux, ou ne possédant pas la bonne extension, ce n'est pas à mon sens un problème inattendu. C'est un cas particulier courant à traiter. Un simple retour FALSE est à mon sens plus adapté, en prenant soin d'enregistrer avant le type d'erreur afin de pouvoir la consulter si besoin via une méthode dédiée. De plus, c'est plus simple et plus rapide à gérer depuis la classe cliente.
A++
Bonne année.
DrAgOnLORdS
Messages postés24Date d'inscriptionsamedi 21 juin 2003StatutMembreDernière intervention24 mars 2008 2 déc. 2009 à 10:28
Salut Codefalse,
Je reviens sur ta source, et je tente de l'utiliser. Mais j'ai un souci, que je n'arrive pas à comprendre.
Lorsque je tente de faire un upload, cela me retourne constament une exception en ligne 387.
Le fichier existe !!!!
Or il n'y a rien dans ce répertoire ....
J'ai beau retourner ta classe dans tous les sens, je ne trouve pas le souci ... Tu aurais une idée ?
D'avance merci.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 26 juin 2008 à 13:03
En fait je commente plus ou moin dans le style de la javadoc. Je n'utilise pas de systeme de documentation automatique mais le fait de se baser sur un style javadoc me permet d'utiliser de nombreux systemes compatibles javadoc (genre Doxygen ou probablement PhpDocumentor)
C'est le style de commentaire que tu trouvera le plus souvent. Apres d'autres font differement, c'est sur :)
DrAgOnLORdS
Messages postés24Date d'inscriptionsamedi 21 juin 2003StatutMembreDernière intervention24 mars 2008 26 juin 2008 à 12:20
Salut Codefalse,
J'ai une question mais rien à voir avec la classe en elle même.
Vu la façon de commenter tu utilises un système de documentation automatique ? Ce que je voulais savoir, c'est quel système utilises tu ?
phpDocumentor ?
merci d'avance.
romainlatin
Messages postés1Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention15 juillet 2008 21 avril 2008 à 12:24
salut tres bon code! j'ai une question a propos de renameFile j'ai testé la fonction et l'extension n'ai jamais rajouté au fichier uploadé?
(0) au lieu de (0).txt
merki
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 avril 2008 à 01:16
mais de rien :)
flieutaud
Messages postés3Date d'inscriptionsamedi 8 mars 2003StatutMembreDernière intervention21 avril 2008 21 avril 2008 à 01:01
Merci encore pour la réponse. Je m'attendais juste à avoir un message d'erreur plus clair, comme indiqué dans le commentaire ci-dessus ;-)
Je pensais (à tort) que les exceptions permettaient justement d'indiquer plus clairement les erreurs et j'imaginais donc que la classe proposées utilisait un tel système. En parcourant le code, je vois que l'on peut pointer vers un fichier xml qui indiquerait tout ça (et même en plusieurs langues). Bon, pour le moment, c'est au dessus de mes moyens... Je vais voir de plus près l'utilisation du bloc try/catch.
Merci encore pour ces indications riches en enseignement.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 20 avril 2008 à 18:14
l'erreur est normale.
Avant l'upload du fichier, le script va effectuer divers tests (est-ce que le fichier à bien été uploadé, est-ce que le repertoire de destination existe, les droits sont-ils corrects, etc).
Dans ton cas, il y a eu une erreur durant l'upload car le fichier est trop volumineux, donc l'erreur (cela s'appelle une exception) est lancée.
Pour éviter l'erreur, il suffit de mettre un bloc try/catch de cette facon :
// On reprends tout le code d'avant et on modifie la derniere ligne par :
try {
$oU->upload ($_FILES['fichier']);
}
catch (SpecialException $oSE) {
echo "Une erreur s'est produite durant l'upload, le fichier n'à put être uploadé.\n
";
echo "La raison était : ".$oSE->getMessage ();
}
et voila ! :)
flieutaud
Messages postés3Date d'inscriptionsamedi 8 mars 2003StatutMembreDernière intervention21 avril 2008 20 avril 2008 à 18:06
Bonjour et merci pour l'aide. La première ligne d'erreur a en effet disparu suite à la midfication proposée, mais il reste encore la seconde si j'essaye d'uploader une image trop volumineuse...
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 20 avril 2008 à 15:59
En fait c'est une erreur dans le code, en effet.
Dans cette ligne :
# class SpecialException extends Exception {
# public function __construct ($iCode, $iParameter) {
Remplace $iParameter par $iParameter = null et ca marchera :)
(le code est corrigé en conséquence
flieutaud
Messages postés3Date d'inscriptionsamedi 8 mars 2003StatutMembreDernière intervention21 avril 2008 19 avril 2008 à 21:08
Bonjour,
J'essaye cette classe et je suis confronté à ce message d'erreur (dès que je mets une image dépassant la limite autorisée) :
Warning: Missing argument 2 for SpecialException::__construct(), called in /home/fred/demapage/classes/upload.class.php on line 382 and defined in /home/fred/demapage/classes/upload.class.php on line 13
Fatal error: Uncaught exception 'UploadException' in /home/fred/demapage/classes/upload.class.php:382 Stack trace: #0 /home/fred/demapage/image_upload.php(53): UploadHelper->upload(Array) #1 {main} thrown in /home/fred/demapage/classes/upload.class.php on line 382
J'avoue n'être que débutant, mais très désireux d'apprendre et de progresser... Si quelqu'un peut m'aiguiller, ce serait sympathique.
Merci !
Fred.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 26 févr. 2008 à 12:14
Mais de rien ! :)
Content que ca te plaise ! :)
gentelmanmd
Messages postés24Date d'inscriptionmardi 17 juillet 2007StatutMembreDernière intervention24 février 2010 26 févr. 2008 à 03:14
merci bcp
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 févr. 2008 à 16:49
C'est vrai qu'en l'état actuel, cette classe ne permet pas de récuperer les informations excepté le chemin du repertoire, le nom du fichier (un $instance->filePath, fileName, destinationFolder devraient fonctionner).
Mais pour connaitre le type de fichier, la taille, et les informations de ce type là, en effet il n'y a aucune possibilité pour le moment, je vais regarder ca de plus pres ! :)
cs_cwi
Messages postés2Date d'inscriptionmardi 16 décembre 2003StatutMembreDernière intervention21 février 2008 21 févr. 2008 à 11:36
Cette class semble impeccable :)
Par contre est il possible de récupérer les informations : chemin de répertoire, nom du fichier, extension du fichier, taille... ?
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 janv. 2008 à 00:08
mais justement le probleme est là, toi tu veux parametrer juste deux trois éléments (destination, renommage et vérification de l'image par exemple), mais un autre voudra plus de possibilités, c'est pour ca !
Apres rien ne t'empeche de modifier ta classe pour que les parametres que tu met tout le temps à true, à x ou a "qqchose", tu le fait dans la classe dans les défaut, comme ca tu les ignores par la suite :)
DiGhan
Messages postés239Date d'inscriptionsamedi 21 février 2004StatutMembreDernière intervention 3 juin 20101 20 janv. 2008 à 14:46
Je trouve qu'à l'utilisation cette classe n'est pas très intuitive. Ecrire une 10aine de lignes pour setter les options d'upload, je trouve ça relativement embetant (gros faineant que je suis).
J'aurai plutôt vu le setup des principales infos (chemin de destination, rename, etc) directement dans le constructeur.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 18 janv. 2008 à 20:44
oué mais ca, d'apres moi, c'est plus à la partie vue de s'en occuper (js et ajax) et dans mon cas (pour le moment) je travail que coté Controller et bientot je passe au model :p
Mais oué ca pourrait être un plus ! :)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 18 janv. 2008 à 20:29
Hello,
c'est pas mal, une idée sympa et mieux codé que la plupart des autres codes du genre.
Je verrai quand même des choses plus poussées...: manque plus qu'n framework JS pour gérer tes uploads côté client, avec progress bar via ajax etc :-)
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 18 janv. 2008 à 19:20
Une petite mise à jour du code afin d'améliorer le script :)
Vous pensez quoi de la gestion des exceptions par Code (la classe fille de exception (SpecialException, dans l'idée, sera chargé d'aller récuperer le message correspondant à l'erreur dans un fichier xml (ou bdd) pour retourner un message adapté à la langue par exemple)
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 18 janv. 2008 à 13:03
Merci c'est gentil :)
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 18 janv. 2008 à 09:06
J'ai parcouru en diagonale le code. C'est propre rien à dire ;)
19 avril 2013 à 17:23
Bravo pour le travail ! :)
J'utilise la classe 'Brut de Pomme', comme idem exemple donné, je suis avec liaison Mysql.
Pas de souci pour la copie de l'image uploadée dans le bon dossier avec le nouveau nom, en revanche, impossible de récupérer le nom de la nouvelle image crée, pour l'intégrer dans ma base de donnée.
J'ai rajouté au formulaire un champs avec name 'image' en type 'hidden' qui est censé récupérer le nom de l'image et crée une variable '$image' qui tente de pioché le nom de la nouvelle image. j'ai beau tourner autour de toutes les étapes de la classe, je n'y arrive pas. Je dois surement mal mis prendre, car je débute ma première appli...
Si quelqu'un de plus pointu peut m'orienter c'est cool !
30 janv. 2010 à 16:45
Sinon je ne suis également pas très fan des Exeptions (peut être à tord).
1 janv. 2010 à 15:16
Belle classe, beau travail. J'utilise moi-même une classe de ce genre.
Juste deux remarques rapides :
- certaines fonctions ne devraient pas, à mon sens, être intégrées dans la classe d'upload. C'est le cas par exemple de "cleanFileName" et de "renameFile". Ces fonctionnalités dépassent en effet l'upload et devraient pouvoir être appelées depuis d'autres classes. Personnellement, j'ai une classe "file" statique qui implémente ce type de fonctions et que j'utilise au besoin depuis ma classe d'upload, mais aussi depuis d'autres classes.
- je ne suis pas fan de la gestion d'erreurs via les exceptions dans ce cas. Pour moi, une exception est lancée lorsqu'un problème inattendu et rare survient (SGBDD HS, par exemple). Envoyer un fichier trop volumineux, ou ne possédant pas la bonne extension, ce n'est pas à mon sens un problème inattendu. C'est un cas particulier courant à traiter. Un simple retour FALSE est à mon sens plus adapté, en prenant soin d'enregistrer avant le type d'erreur afin de pouvoir la consulter si besoin via une méthode dédiée. De plus, c'est plus simple et plus rapide à gérer depuis la classe cliente.
A++
Bonne année.
2 déc. 2009 à 10:28
Je reviens sur ta source, et je tente de l'utiliser. Mais j'ai un souci, que je n'arrive pas à comprendre.
Lorsque je tente de faire un upload, cela me retourne constament une exception en ligne 387.
Le fichier existe !!!!
Or il n'y a rien dans ce répertoire ....
J'ai beau retourner ta classe dans tous les sens, je ne trouve pas le souci ... Tu aurais une idée ?
D'avance merci.
26 juin 2008 à 13:03
C'est le style de commentaire que tu trouvera le plus souvent. Apres d'autres font differement, c'est sur :)
26 juin 2008 à 12:20
J'ai une question mais rien à voir avec la classe en elle même.
Vu la façon de commenter tu utilises un système de documentation automatique ? Ce que je voulais savoir, c'est quel système utilises tu ?
phpDocumentor ?
merci d'avance.
21 avril 2008 à 12:24
(0) au lieu de (0).txt
merki
21 avril 2008 à 01:16
21 avril 2008 à 01:01
Je pensais (à tort) que les exceptions permettaient justement d'indiquer plus clairement les erreurs et j'imaginais donc que la classe proposées utilisait un tel système. En parcourant le code, je vois que l'on peut pointer vers un fichier xml qui indiquerait tout ça (et même en plusieurs langues). Bon, pour le moment, c'est au dessus de mes moyens... Je vais voir de plus près l'utilisation du bloc try/catch.
Merci encore pour ces indications riches en enseignement.
20 avril 2008 à 18:14
Avant l'upload du fichier, le script va effectuer divers tests (est-ce que le fichier à bien été uploadé, est-ce que le repertoire de destination existe, les droits sont-ils corrects, etc).
Dans ton cas, il y a eu une erreur durant l'upload car le fichier est trop volumineux, donc l'erreur (cela s'appelle une exception) est lancée.
Pour éviter l'erreur, il suffit de mettre un bloc try/catch de cette facon :
// On reprends tout le code d'avant et on modifie la derniere ligne par :
try {
$oU->upload ($_FILES['fichier']);
}
catch (SpecialException $oSE) {
echo "Une erreur s'est produite durant l'upload, le fichier n'à put être uploadé.\n
";
echo "La raison était : ".$oSE->getMessage ();
}
et voila ! :)
20 avril 2008 à 18:06
20 avril 2008 à 15:59
Dans cette ligne :
# class SpecialException extends Exception {
# public function __construct ($iCode, $iParameter) {
Remplace $iParameter par $iParameter = null et ca marchera :)
(le code est corrigé en conséquence
19 avril 2008 à 21:08
J'essaye cette classe et je suis confronté à ce message d'erreur (dès que je mets une image dépassant la limite autorisée) :
Warning: Missing argument 2 for SpecialException::__construct(), called in /home/fred/demapage/classes/upload.class.php on line 382 and defined in /home/fred/demapage/classes/upload.class.php on line 13
Fatal error: Uncaught exception 'UploadException' in /home/fred/demapage/classes/upload.class.php:382 Stack trace: #0 /home/fred/demapage/image_upload.php(53): UploadHelper->upload(Array) #1 {main} thrown in /home/fred/demapage/classes/upload.class.php on line 382
J'avoue n'être que débutant, mais très désireux d'apprendre et de progresser... Si quelqu'un peut m'aiguiller, ce serait sympathique.
Merci !
Fred.
26 févr. 2008 à 12:14
Content que ca te plaise ! :)
26 févr. 2008 à 03:14
21 févr. 2008 à 16:49
Mais pour connaitre le type de fichier, la taille, et les informations de ce type là, en effet il n'y a aucune possibilité pour le moment, je vais regarder ca de plus pres ! :)
21 févr. 2008 à 11:36
Par contre est il possible de récupérer les informations : chemin de répertoire, nom du fichier, extension du fichier, taille... ?
21 janv. 2008 à 00:08
Apres rien ne t'empeche de modifier ta classe pour que les parametres que tu met tout le temps à true, à x ou a "qqchose", tu le fait dans la classe dans les défaut, comme ca tu les ignores par la suite :)
20 janv. 2008 à 14:46
J'aurai plutôt vu le setup des principales infos (chemin de destination, rename, etc) directement dans le constructeur.
18 janv. 2008 à 20:44
Mais oué ca pourrait être un plus ! :)
18 janv. 2008 à 20:29
c'est pas mal, une idée sympa et mieux codé que la plupart des autres codes du genre.
Je verrai quand même des choses plus poussées...: manque plus qu'n framework JS pour gérer tes uploads côté client, avec progress bar via ajax etc :-)
18 janv. 2008 à 19:20
Vous pensez quoi de la gestion des exceptions par Code (la classe fille de exception (SpecialException, dans l'idée, sera chargé d'aller récuperer le message correspondant à l'erreur dans un fichier xml (ou bdd) pour retourner un message adapté à la langue par exemple)
18 janv. 2008 à 13:03
18 janv. 2008 à 09:06