malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
7 nov. 2007 à 19:59
salenson
Messages postés1Date d'inscriptionmardi 22 août 2006StatutMembreDernière intervention11 juin 2010
-
11 juin 2010 à 12:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
salenson
Messages postés1Date d'inscriptionmardi 22 août 2006StatutMembreDernière intervention11 juin 2010 11 juin 2010 à 12:22
Oui, on peut faire bien plus simple avec les mêmes résultats :
Le formulaire :
<form action="traitement.php" method="post" enctype="multipart/form-data" >
</form>
Le traitement :
<?php
# ################################## #
# Traitement des fichiers à uploader #
# ################################## #
// Définition de la classe PHP5
class Fichier
{
// Détecter l'extension et afficher cette extension
public function recupererExtension($fichier)
{
$extensions = array('jpg', 'JPG' , 'jpeg', 'JPEG','png','PNG','gif','GIF','bmp','BMP');
$ext = preg_replace('/.*\.([^\.]*)/', '$1', $fichier);
return in_array($ext, $extensions) ? $ext : false;
}
// Copier le fichier dans le dossier cible
public function copierFichier($fichier,$destination)
{
return (copy($fichier,$destination));
}
}
# Créer le dossier où seront uploadés les fichiers
if (is_dir("uploads") == FALSE) mkdir("uploads");
// Le premier fichier
$monFichier = new Fichier;
for ($i=0;$i<=9;$i++)
{
$finFile = $i?$i:"";
// Tester l'extension pour continuer
$monExtension = $monFichier->recupererExtension($_FILES['uploadedfile'.$finFile]['name']);
//echo "
Ext($finFile) = $monExtension \n";
if ($monExtension)
{
// -> Définir le chemin/destination du fichier uploadé
$target_path = "uploads/".basename($_FILES['uploadedfile'.$finFile]['name']);
// -> Uploader et enregistrer le fichier
if ($monFichier->copierFichier($_FILES['uploadedfile'.$finFile]['tmp_name'],$target_path) == 1)
{
# -> Upload réussi
echo "Upload OK";
}
}
}
?>
cs_caviar
Messages postés329Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention29 mars 20152 18 nov. 2008 à 12:43
salut, pas mal ton petit script. Pour ceux qui sont intéresses par un système en flash il y a aussi NAS Uploader que vous trouvez ici
http://www.nasuploader.com @++
touhami_com1
Messages postés1Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention12 novembre 2008 12 nov. 2008 à 22:49
un autre script qui fonctionne pas merde alors ca sert a quoi de poster des tas de merde qui fonctionne pas ?
lau10
Messages postés3Date d'inscriptiondimanche 10 décembre 2000StatutMembreDernière intervention28 novembre 2014 6 mai 2008 à 12:58
bonjour
problème : Fatal error: Call to a member function testerExtension() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\Multiupload\traitement.php on line 68
résolu en rajoutant l'initialisation de la class Fichier avant de tester l'extension:
$monFichier = new Fichier;
if ($monFichier->testerExtension($_FILES['fichier1']['name']) == 1)
pour les 4 caractères de l'extension : le format JPEG est-il indispensable ? pas très courant me semble t-il et renommable en JPG
ce script fonctionne, il est simple et je le trouve utile, même si d'après les experts il n'est pas très optimisé.
plaroche
Messages postés1Date d'inscriptionlundi 7 juin 2004StatutMembreDernière intervention14 novembre 2007 14 nov. 2007 à 11:42
jacknikolson
Messages postés134Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention18 novembre 2012 12 nov. 2007 à 14:04
Rien à faire, je suis passé sous easyphp 2.0 mais maintenant je me retrouve avec les erreurs suivantes:
Notice: Undefined variable: monFichier in C:\Program Files\EasyPHP 2.0b1\www\Multiupload\traitement.php on line 68
Fatal error: Call to a member function testerExtension() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\Multiupload\traitement.php on line 68
alover971
Messages postés8Date d'inscriptionsamedi 25 février 2006StatutMembreDernière intervention30 novembre 2007 12 nov. 2007 à 12:21
bon j'ai tester donc..
Malheureusement ca ne me convient pas du tout hein :))) lol
j'ai besoin d'un upload ou on selectionne plusieurs fichier d'un coup...
malheureusement faut swf upload, ou fancy upload (basé dessus) et ca pause pb car y'a des bugs encore :( snif !
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 12 nov. 2007 à 11:00
Hello,
c'est du PHP5 et tu es en PHP4. Firefox ou IE ça ne changera rien.
jacknikolson
Messages postés134Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention18 novembre 2012 12 nov. 2007 à 10:02
Je viens de tester:
Chez moi sous FF voici la réponse quand je clique sur "Uploader les fichiers"
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in d:\mes documents\02multimédia\php\www\multiupload\traitement.php on line 10
alover971
Messages postés8Date d'inscriptionsamedi 25 février 2006StatutMembreDernière intervention30 novembre 2007 12 nov. 2007 à 07:54
peut etre un manque d'optimisation et de fonctionnalité mais .. je vais aller tester..
puisque j'ai justement besoin d'un uploadm ultiple qui marche à 100%.. comparer à beaucoup qui buggué une fois sur 10..
par contre, je crois que ton upload multiple, on doit selectionner un par un, car je ne vois pas de fichier flash.. seul lui gère la selection multiple :)
Donc je pense que je vais garder fancyupload qui est effectivement le meilleur que j'ai pu voir..
petit problème est qu'il utilise mootools, et non pas jquery.. et que cela m'embeter legerement :D
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 8 nov. 2007 à 21:37
Une autre appli sympa et opensource qui fait pareil que la tienne :
Zeo34
Messages postés7Date d'inscriptionjeudi 29 mai 2003StatutMembreDernière intervention10 janvier 2009 8 nov. 2007 à 10:41
Salut,
Le script PHP est une portion du code d'un des projets que je gère au niveau de mon travail dans une société privée. Comme j'étais assez pressé de rajouter ces scripts sur PHPCS, je n'ai pas relu. Deplus, il n'est qu'une portion d'un ensemble ... Comme je ne travaille pas seul sur les projets Web, nous (les webmasters) avont mis en place des méthodes de scripts ... Pour prendre en compte les niveaux de programmation de chacun.
Cordialement,
Damien
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 8 nov. 2007 à 01:25
Salut,
La méthode testerExtension est inutile. Elle fait totalement doublon avec la méthode recupererExtension.
if ($fichier -> recupererExtension())
sera vrai si une extension est retournée, faux sinon.
Cette méthode recupererExtension, justement, comporte une erreur :
$extensions = array('.jpg', '.JPG' , '.jpeg', '.JPEG','.png','.PNG','.gif','.GIF','.bmp','.BMP');
$ext = strtolower(substr($fichier,'-4'));
Pour le cas d'extensions qui font 4 caractères, l'extension ne sera pas trouvée.
Je préfère, et de loin, utiliser une PCRE pour récupérer l'extension sans le point
Par ailleurs, je verrais bien les extensions autorisées définies en dehors de la méthode : définir à chaque fois une variable de la même manière, c'est un peu lourd.
=>
return (copy($fichier,$destination));
Du coup, cette methode ne sert à rien : elle ne fait que renommer une fonction php.
Du coup, pour tester l'extension, comme le disait Malalam, ça ne mérite pas une classe.
public function __construct()
{
$this->fichier;
}
Je ne comprends pas l'intérêt du constructeur...
la propriété Fichier::fichier n'est même pas définie... Cette ligne ne fait, en fait, rien...
Donc inutile de mettre un constructeur dans ce cas là, l'objet sera construit malgré tout.
De même que le destructeur : S'il n'est pas spécifié, cela n'empêche pas l'objet d'être détruit.
Encore un détail :
if (is_dir("uploads") == FALSE)
>>>
if (!is_dir('uploads'))
Bref... Ca mériterait d'être sérieusement raccourci...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 7 nov. 2007 à 19:59
Hello,
ouais, y a surtout bcp de js!
Au passage, jquery n'est pas un framework ajax. C'est une librairie javascript. Ca ne permet pas QUE de faire de l'ajax. D'ailleurs, ton code en est la preuve : il n'y a pas d'ajax.
Sinon, ben je ne connaissais pas cette extension de jquery : Multifile. C'est intéressant. Je testerai tout ça. N'ayant pas du tout testé ton code, je réserve mon commentaire dessus (la partie php donc) pour plus tard. Le js, vu qu'il n'est pas de toi, je ne le commenterai pas :-) Mais bon juste : là, t'avais pas franchement besoin d'une classe...
11 juin 2010 à 12:22
Le formulaire :
<form action="traitement.php" method="post" enctype="multipart/form-data" >
</form>
Le traitement :
<?php
# ################################## #
# Traitement des fichiers à uploader #
# ################################## #
// Définition de la classe PHP5
class Fichier
{
// Détecter l'extension et afficher cette extension
public function recupererExtension($fichier)
{
$extensions = array('jpg', 'JPG' , 'jpeg', 'JPEG','png','PNG','gif','GIF','bmp','BMP');
$ext = preg_replace('/.*\.([^\.]*)/', '$1', $fichier);
return in_array($ext, $extensions) ? $ext : false;
}
// Copier le fichier dans le dossier cible
public function copierFichier($fichier,$destination)
{
return (copy($fichier,$destination));
}
}
# Créer le dossier où seront uploadés les fichiers
if (is_dir("uploads") == FALSE) mkdir("uploads");
// Le premier fichier
$monFichier = new Fichier;
for ($i=0;$i<=9;$i++)
{
$finFile = $i?$i:"";
// Tester l'extension pour continuer
$monExtension = $monFichier->recupererExtension($_FILES['uploadedfile'.$finFile]['name']);
//echo "
Ext($finFile) = $monExtension \n";
if ($monExtension)
{
// -> Définir le chemin/destination du fichier uploadé
$target_path = "uploads/".basename($_FILES['uploadedfile'.$finFile]['name']);
// -> Uploader et enregistrer le fichier
if ($monFichier->copierFichier($_FILES['uploadedfile'.$finFile]['tmp_name'],$target_path) == 1)
{
# -> Upload réussi
echo "Upload OK";
}
}
}
?>
18 nov. 2008 à 12:43
http://www.nasuploader.com
@++
12 nov. 2008 à 22:49
6 mai 2008 à 12:58
problème : Fatal error: Call to a member function testerExtension() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\Multiupload\traitement.php on line 68
résolu en rajoutant l'initialisation de la class Fichier avant de tester l'extension:
$monFichier = new Fichier;
if ($monFichier->testerExtension($_FILES['fichier1']['name']) == 1)
pour les 4 caractères de l'extension : le format JPEG est-il indispensable ? pas très courant me semble t-il et renommable en JPG
ce script fonctionne, il est simple et je le trouve utile, même si d'après les experts il n'est pas très optimisé.
14 nov. 2007 à 11:42
http://swfupload.mammon.se/download.php, il ya des exemples, c'est tres simple et ca
combine du flash + AJAX.
12 nov. 2007 à 14:04
Notice: Undefined variable: monFichier in C:\Program Files\EasyPHP 2.0b1\www\Multiupload\traitement.php on line 68
Fatal error: Call to a member function testerExtension() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\Multiupload\traitement.php on line 68
12 nov. 2007 à 12:21
Malheureusement ca ne me convient pas du tout hein :))) lol
j'ai besoin d'un upload ou on selectionne plusieurs fichier d'un coup...
malheureusement faut swf upload, ou fancy upload (basé dessus) et ca pause pb car y'a des bugs encore :( snif !
12 nov. 2007 à 11:00
c'est du PHP5 et tu es en PHP4. Firefox ou IE ça ne changera rien.
12 nov. 2007 à 10:02
Chez moi sous FF voici la réponse quand je clique sur "Uploader les fichiers"
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in d:\mes documents\02multimédia\php\www\multiupload\traitement.php on line 10
12 nov. 2007 à 07:54
puisque j'ai justement besoin d'un uploadm ultiple qui marche à 100%.. comparer à beaucoup qui buggué une fois sur 10..
par contre, je crois que ton upload multiple, on doit selectionner un par un, car je ne vois pas de fichier flash.. seul lui gère la selection multiple :)
Donc je pense que je vais garder fancyupload qui est effectivement le meilleur que j'ai pu voir..
petit problème est qu'il utilise mootools, et non pas jquery.. et que cela m'embeter legerement :D
8 nov. 2007 à 21:37
http://digitarald.de/project/fancyupload/
8 nov. 2007 à 10:41
Le script PHP est une portion du code d'un des projets que je gère au niveau de mon travail dans une société privée. Comme j'étais assez pressé de rajouter ces scripts sur PHPCS, je n'ai pas relu. Deplus, il n'est qu'une portion d'un ensemble ... Comme je ne travaille pas seul sur les projets Web, nous (les webmasters) avont mis en place des méthodes de scripts ... Pour prendre en compte les niveaux de programmation de chacun.
Cordialement,
Damien
8 nov. 2007 à 01:25
La méthode testerExtension est inutile. Elle fait totalement doublon avec la méthode recupererExtension.
if ($fichier -> recupererExtension())
sera vrai si une extension est retournée, faux sinon.
Cette méthode recupererExtension, justement, comporte une erreur :
$extensions = array('.jpg', '.JPG' , '.jpeg', '.JPEG','.png','.PNG','.gif','.GIF','.bmp','.BMP');
$ext = strtolower(substr($fichier,'-4'));
Pour le cas d'extensions qui font 4 caractères, l'extension ne sera pas trouvée.
Je préfère, et de loin, utiliser une PCRE pour récupérer l'extension sans le point
$ext = preg_replace('/.*\.([^\.]*)/', '$1', $fichier);
return in_array($ext, $extensions) ? $ext : false;
Par ailleurs, je verrais bien les extensions autorisées définies en dehors de la méthode : définir à chaque fois une variable de la même manière, c'est un peu lourd.
if (copy($fichier,$destination) == TRUE)
{
return TRUE;
}
else
{
return FALSE;
}
=>
return (copy($fichier,$destination));
Du coup, cette methode ne sert à rien : elle ne fait que renommer une fonction php.
Du coup, pour tester l'extension, comme le disait Malalam, ça ne mérite pas une classe.
public function __construct()
{
$this->fichier;
}
Je ne comprends pas l'intérêt du constructeur...
la propriété Fichier::fichier n'est même pas définie... Cette ligne ne fait, en fait, rien...
Donc inutile de mettre un constructeur dans ce cas là, l'objet sera construit malgré tout.
De même que le destructeur : S'il n'est pas spécifié, cela n'empêche pas l'objet d'être détruit.
Encore un détail :
if (is_dir("uploads") == FALSE)
>>>
if (!is_dir('uploads'))
Bref... Ca mériterait d'être sérieusement raccourci...
7 nov. 2007 à 19:59
ouais, y a surtout bcp de js!
Au passage, jquery n'est pas un framework ajax. C'est une librairie javascript. Ca ne permet pas QUE de faire de l'ajax. D'ailleurs, ton code en est la preuve : il n'y a pas d'ajax.
Sinon, ben je ne connaissais pas cette extension de jquery : Multifile. C'est intéressant. Je testerai tout ça. N'ayant pas du tout testé ton code, je réserve mon commentaire dessus (la partie php donc) pour plus tard. Le js, vu qu'il n'est pas de toi, je ne le commenterai pas :-) Mais bon juste : là, t'avais pas franchement besoin d'une classe...