FONCTION UPLOAD DE FICHIER

cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004 - 30 août 2003 à 07:33
Guiom60 Messages postés 8 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 13 mai 2007 - 12 mai 2007 à 19:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/13424-fonction-upload-de-fichier

Guiom60 Messages postés 8 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 13 mai 2007
12 mai 2007 à 19:55
Warning: main() [function.main]: open_basedir restriction in effect. File(../_include/fonction.php) is not within the allowed path(s): (/mnt/144/sdb/c/d/xx.yy) in /mnt/144/sdb/c/d/xx.yy/upload.php on line 6

Warning: main(../_include/fonction.php) [function.main]: failed to open stream: Operation not permitted in /mnt/144/sdb/c/d/xx.yy/upload.php on line 6

Warning: main() [function.include]: Failed opening '../_include/fonction.php' for inclusion (include_path='/mnt/144/sdb/c/d/xx.yy/include:.:/usr/php4/lib/php') in /mnt/144/sdb/c/d/xx.yy/upload.php on line 6
Probleme de fichier include de fonction.
Fatal error: Call to undefined function: upload_fichier() in /mnt/144/sdb/c/d/xx.yy/upload.php on line 8

Je rencontre un petit probleme de mise en service de votre code. J'ai téléchergé les deux fichiers, déposé sur le serveur Free. La boite de dialogue d'upload me demande un fichier, j'en prend un, un .gif, et là, bam ! Message d'erreur.

Je ne sais pas quoi faire :/ Si il y a une âme charitable ici ^^

Merci d'avance.
Benji_X80 Messages postés 4 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 13 novembre 2008
28 déc. 2006 à 21:27
Serait il possible de mettre un lien direct plutôt que "../image/706541.jpg"?

J'ai essayé de mettre sur le fichier fonction.php le debut de ma page perso entre guillements avant le dossier et j'ai: "http://monsite.com../image/706541.jpg"

Bref ça commence à m'enerver de pas trouver sinon beau boulot!! Si quelqu'un y arrive dîtes-le moi merci
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
26 juil. 2006 à 17:01
ok, Merci quand même
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
26 juil. 2006 à 17:00
c'est clair.
En fait je ne peux meme pas te renseigner car je n'ai meme pas osé chercher...
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
26 juil. 2006 à 16:56
Merci, je me doute que c'est compliqué car j'ai bcp chercher sans succès
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
26 juil. 2006 à 16:51
Pour obtenir ça je te souhaite bien du courage ... :))
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
26 juil. 2006 à 16:48
Comment faire pour mettre un pourcentage, par exemple :
Fichier uploader à 80%,81% afin avoir une progression.

Merci d'avance
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
12 juil. 2006 à 13:51
Salut,

il s'agit juste du nom du fichier que tu upload.

Pour le recupérer il te suffit de mettre le nom de ta variable (nom du champs html file) suivi de _name

Ex : nom champs html file = monfichier
alors :

$src_fichier= $_POST['monfichier'];
$destination= 'maDestination/';
$nom_fichier= $_FILES["monfichier"]["name"];

Voila j'espere avoir été clair :))
jasou62114 Messages postés 59 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 20 juillet 2010
12 juil. 2006 à 13:29
salut
dans la description du code il y a ceci :
"Apres l'envoi d'un formulaire avec upload de fichier, appeller cette fonction et lui passer en paramettre le nom du champ fichier (champ d'upload) ainsi que la detination du fichier à enregistrer."

En le lisant on voit deux paramètre, or la fonction en a 3?...
qui va dans quoi?...
$src_fichier= $_POST['monfichier'];
$destination= $_FILES["monfichier"]["name"];
$nom_fichier=?

Enfin perso je suis plutot moyen en php j'ai commencé il y a 2mois, dc je comprend un peu mais de là à voir tte les subtilités nan :(
voilà merci ^^
juliengdp Messages postés 1 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 11 avril 2006
11 avril 2006 à 18:03
Excellent script. J'ajoutterai que dans le fichier de conf on peut modifier le script d'alerte si le fichier est interdit :

<script>
alert ('Le format de fichier ".<? echo $extention_fichier; ?>" n\'est pas accepté par le serveur!');
javascript:history.go(-1);
</script>

Cela a pour effet de revenir sur le formulaire au lieu de se tapper un vieux mySQL error ;)
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
21 nov. 2005 à 18:44
MErci à toi Unknownn.

Effectivement je n'ai paseu trop le temps ces derniers moi pour améliorer cette fonction et d'autres, ni pour répondre aux commentaires, je m'en excuse.

Bon code à tous
cs_Unknownn Messages postés 5 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 4 juillet 2005
21 nov. 2005 à 18:38
Lucette ? Où est-elle ? :P

Bon sinon en ce qui concerne mon cas, j'ai eu ma réponse.

Pour répondre à babatt92, oui tu l'as met en boucle comme tu le dis.
De mon côté, ça fonctionne très bien. J'ai juste enlever quelques futilitées à mon goût que je ne critique pas (je n'oserai pas)

Merci Manouille et bonne chance pour la suite !
Unknownn ;)
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
21 nov. 2005 à 08:53
Et pourtant y'a rien de très compliqué la dedans ...
Quand on veut certaine restriction et vérification, y'a pas le choix, il faut aligner le code...

C'est l'jeu ma pauvre Lucette...
SpaceCowboyZ Messages postés 2 Date d'inscription vendredi 10 décembre 2004 Statut Membre Dernière intervention 19 novembre 2005
19 nov. 2005 à 10:14
Incoryable, impossible de trouver une fonction d'upload qui fonctionne correctement sans être une usine à gaz ...
SpaceCowboyZ Messages postés 2 Date d'inscription vendredi 10 décembre 2004 Statut Membre Dernière intervention 19 novembre 2005
19 nov. 2005 à 10:09
Incoryable, impossible de trouver une fonction d'upload qui fonctionne correctement sans être une usine à gaz ...
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
16 oct. 2005 à 23:19
Bonjour,
Comment je peux faire pour télécharger plusieurs ficher?
Ou est ce que je met la boucle?

Merci par avance
igratuit Messages postés 32 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 5 mai 2006
23 juil. 2005 à 11:27
Marche pas :).
Sinon il allaire bien ...
8 / 10 !
cs_Unknownn Messages postés 5 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 4 juillet 2005
3 juil. 2005 à 12:51
Bonjour,

Je suis débutant et je n'arrive pas à vérifier la taille du fichier dans ce script avant l'envoi. J'esssaye d'utiliser $_FILES['Size'] mais ça ne fonctionne pas. si quelqu'un pouvait me bricoler la solution toute bien faite, ce serait superbe. En effet, la taille ne doit pas excéder 2Mo chez Free.

Merci de votre éventuelle aide,
Unknownn
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
1 oct. 2004 à 20:50
pour l'upload, une fonction très simple, il suffit de mettre des if si on veut gérer des extensions...

code.aspx?id=24147.
benjiman2 Messages postés 56 Date d'inscription dimanche 13 juin 2004 Statut Membre Dernière intervention 8 juillet 2007
31 juil. 2004 à 02:55
Bonjour ,
je suis un petit newbie et je voudrais savoir comment faire pour appeler cette fonction ?
Quel nom de variable choisir lors demon ofmulaire etc ...

MErci de vos réponse !
0ri0n Messages postés 19 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 29 juillet 2017
8 juil. 2004 à 12:10
Ca marche nikel en local, mais sur mon serveur, ça foire, qd je fais upload il se passe rien, ni photo, ni message ni rien, les gobals son off
antoine129 Messages postés 64 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 5 juin 2006
17 juin 2004 à 03:02
moi j'ai une chtite remarque en terme algorithmique : ta boucle for qui verifie qu' un autre fichier ne porte pas le meme nom est affreusement codée ;)
en effet, tu utilise une technique bizarre en mettant $v inférieur ou supérieur à la valeur de sortie de boucle, ce qui revient à un while :D
il serait beaucoup plus propre d'écrire :

$sortie=true;
while($sortie){
$nom_fichier=(mt_rand(1,1000000));
$nom_fichier=(ceil($nom_fichier));
$nom_fichier=$nom_fichier.".".$extention_fichier;

if (!file_exists($destination.$nom_fichier)){
$sortie=false;
}
}

il faut relire les cours d'algo :P
Nan mais sérieusement sinon ton code est pas trop mal ;)
cs_Djai Messages postés 7 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 18 juillet 2005
16 juin 2004 à 23:09
Bien pensé, si tu débute, bravo !
L'upload de fichier est trés utile donc une source comme ça est trés intérressante et en plus pas trés compliquée.
(ça change de certaines sources où il est difficile de leurs trouver une utilité).
L'idée de argos69 (modifier ton code dans une prog objet) est bien. Si tu le sent, fait le.
Bonne prog....
cs_Matthews Messages postés 1 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 mai 2004
17 mai 2004 à 11:59
Bonjour,

Le script ne semble pas fonctionner !

Tout d'abord j'ai cette erreur sur la page "upload.php":
"Notice: Undefined variable: sub in c:\program files\easyphp1-7\www\upload de fichier\upload\upload.php on line 2"

J'essaye de télécharger un fichier jpg ou pdf... au résultrat rien dans le dossier image !!!

Que faire ?

Pour info: j'utilise easyphp
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
29 oct. 2003 à 11:22
Bonjour alikharchafi,

Oui effectivment c'est normal, le nom du fichier est changé par une suite de chiffres généré aléatoirement.
Ceci a pour but de ne pas avoir d'erreur de nomage du fichier (évite les caracteres accentué et les caractères non exploitable sur internet) et cela est également utilie car comme ceci les images ne sont identifiable par un nom explicite.

De plus le script vérifie automatiquement que le nom du fichier n'est pas déja utilisé par un autre fichier et evite ainsi de l'ecraser.

Mais tu peux toujours recupérer le nom original du fichier qui a été uploasder grace à cette variable $info_fichier[NOM_ORIGINE].

Voili voilou ...

Bonne journée

Manouille
alikharchafi Messages postés 1 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 29 octobre 2003
29 oct. 2003 à 10:31
Salut,
j'ai un problème: quand j'upload un fichier sur un serveur, son nom change, est-ce que c'est normal?
si c pas normal comment remedier à cela?
Merci.
argos69 Messages postés 2 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 septembre 2003
9 sept. 2003 à 15:16
Salut,

tu es sur la bonne voie mais pas encore au bout du tunnel.

1) Tu copies ton fichier sur le serveur est ensuite s'il sa taille dépasse de celle autorisée, tu l'efface. C'est pas bon du tout. Vérifie d'abord sa taille avant de la copier sur le serveur. réupère dans $_FILES['Size'].
2) Pour le format des fichiers, tu vérifies l'extension. Ok... mais rien n'empèche qqn de mettre l'extension .jpg sur un fichier .exe! Récupèrer le type de ton fichier dans ton tableau $_FILES['Type'] ne peut pas aller nom plus car il vérifie comme tu le fais l'extension du fichier. Seul solution, regarder dans le code du fichier! En général tu trouveras le type du fichier.
3) Vérifies s'il reste assez de place sur le disque dur avant de copier le fichier.
4) Vérifie s'il n'y a pas eu des problème lors du transfert de ton fichier avec $_FILE['error']
5) Mets tout les codes d'erreur dans un tableau et appelle-les lors d'une rencontre d'erreur

Pour finir, j'aimerai que tu programme le tout en orienté objet. Fais-nous une belle classe Upload avec des propriétés, un constructeur, des méthodes, libère la mémoire à la fin et renvoi un objet (plutôt qu'un tableau) avec toutes les infos (qui seront tes propriétés)

Bonne continuation,
Gilles
cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004
9 sept. 2003 à 14:35
À première vue, ce script semble être impeccable puisque répond à toutes mes attentes...
Je m'empresse de faire un essai sur le champs...
À moins de problème je ne devrais pas refaire de commentaire...
@+
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
9 sept. 2003 à 10:25
Voila, quelques corrections et amélioration ont été apportées.
Il en reste a faire mais j'attent tout de meme vos commentaires

Merci
cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004
3 sept. 2003 à 19:41
Excellent,

Mets une note ici pour aviser quand tu auras faits des changements afin que l'on puisse essayer ton nouveau programme...

à la base, il semble assez intéressant car j'en ai essayé d'autres mais j'ai des problèmes de CHMOD alors que ton programme propose de forcer les CHMOD 755 au fichiers don que je pourrai enfin télécharger en local... Le seul hic est que je dois absolument contrôler le type de fichier et leur poids maximal pour éviter les problèmes... Ainsi donc un petit message d'erreur personnalisable serait tout indiqué pour aviser les gens pourquoi il y a échec de upload et un autre pour indiquer que tout a bien fonctionné...
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
3 sept. 2003 à 09:12
Oui c'est tout a fait possible, et c'est meme une tres bonne idée.

J'adore les critiques, c'est toujours constructif, je vais m'appliquer à les mettre en place dès que j'ai le temps.

Merci à vous

Manouille
argos69 Messages postés 2 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 septembre 2003
31 août 2003 à 12:46
1) Tu verifie que l'extension du fichier donc tu ne peux pas garantir réellement si le format du fichier est celui voulu. Il existe des fonction plus poussée en PHP pour vérifier l'exactitude.
2) C'est bien de vérifier si le nom du fichier existe déjà dans le dossier d'upload mais ce serait pas mal également que la classe vérifie s'il reste assez d'espace disque pour la copie.
3) Pour chaque vérification du fichier, créer des code d'erreur correspondant que tu met dans un tableau. Ensuite tu les retourne lorsqu'il rencontre un problème lié au fichier.
4) Comme 'return' de la classe, renvoi un objet ou un tableau contenant toute les infos du fichier. (Nom, URL, poids, type)

Voilà, prends ça comme des critique constructive qui feront évoluer ta classe! Lorsque tu auras fait celà, reposte-la et peut-être auras-tu trouvé d'autre amélioration. A ce moment-là peut-être utiliserais-je ta classe.

a+
Gilles
cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004
30 août 2003 à 07:33
Peut-on gérer le poids maximal des fichiers à uploader ???
Rejoignez-nous