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

  FORUM HardWare.fr
  Programmation
  PHP

  probleme de réléchargement de fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme de réléchargement de fichier

n°1325131
jedebute75
Posté le 14-03-2006 à 15:04:31  profilanswer
 

aaaaaaaaarggg, heeelpppp,
 
je veux télécharger un fichier de mon ordi qui s'enregistre après dans une base de donnée.
aucun probleme pour la base mais o téléchargement ça marche pas.
 
voilà mon code qui fait le teste du fichier qu'on souhaite téléchargé :  
 
<?php
// Taille maximum
$MAX_FILE_SIZE = 1500000;
 
// Dossier de destination du fichier
$folder = "./IMG/doc/";
 
// Variables récupérée par methode POST du formulaire
$fname = $HTTP_POST_FILES['fichier']['name'];
$ftype = $HTTP_POST_FILES['fichier']['type'];
$fsize = $HTTP_POST_FILES['fichier']['size'];
$ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];
 
// Tableau array des différents types
$allowed_types = array("application/rtf", "application/excel", "application/pdf", "application/mspowerpoint", "application/msword", "image/bmp", "image/gif", "image/pjpeg", "image/jpeg", "image/jpg", "multipart/x-zip", "video/mpeg", "video/msvideo" );
 
// Diverses test afin de savoir si :
// Le format de fichier correspond à notre tableau array
if(!in_array($ftype, $allowed_types)){$error = 1;}
 
// La taille du fichier n'est pas dépassée
if($fsize > $MAX_FILE_SIZE){$error = 2;}
 
// Le fichier n'existe pas déjà
if(file_exists($folder."m_".$fname)){$error = 3;}
 
// Si tout va bien, c'est bien déroulé
if(copy($ftmp,''.$folder.''.$fname.'')) {$error = 0;}
 
// Switch servant simplement à la gestion des erreurs
switch($error){
case'0':
echo("<br>Nous avons bien reçu le fichier ".$fname."." );
break;
case'1':
echo("<br><font color='red'>Erreur : le format de fichier est incorrect.</font>" );
break;
case'2':
echo("<br><font color='red'>Erreur : le fichier est trop volumineux.</font>" );
break;
case'3':
echo("<br><font color='red'>Erreur : un fichier du même nom a déjà été envoyé sur le serveur.</font>" );
break;
}
?>
 
 
j'ai sans cesse l'erreur "le format de fichier est incorrect" pourtant ma variable "$allowed_types" autorise les pdf ou autre fichier word (j'ai testé avec des pdf, word et excel même probleme).
 
aah j'ai que des galères de code...c hard!!

mood
Publicité
Posté le 14-03-2006 à 15:04:31  profilanswer
 

n°1325143
omega2
Posté le 14-03-2006 à 15:20:38  profilanswer
 

"$ftype" contient quoi? (fait un echo de "$ftype" )
A ma conaissance, "in_array()" fait la différence entre une majuscule et une minuscule pour des chaines de caractéres.

n°1325149
Djebel1
Nul professionnel
Posté le 14-03-2006 à 15:25:27  profilanswer
 

Comme te l'a déjà dit Omega2, essaye un minimum de débugger par toi-même ;)
Par exemple ici :
tu as sans cesse "le format de fichier est incorrect" ==> donc $error vaut toujours 1 ==> donc y a un problème dans ta condition if (!in_array($ftype, $allowed_types))  
 
==> donc tu fais un affichage de $ftype et de $allowed_types, et tu regardes où est le problème. Et je suis près à parier que tu ne l'as pas fait.
 
Et juste au cas où tu ne connaitrais pas cette fonction, utilise la fonction print_r pour afficher une variable ( http://www.php.net/manual/fr/function.print-r.php ). Utilisation garantie pour tout débuggage en PHP


Message édité par Djebel1 le 14-03-2006 à 15:28:05
n°1325155
jedebute75
Posté le 14-03-2006 à 15:33:51  profilanswer
 

aaah ça m'enerve, il m'affiche rien du tout quand je lui dit echo $ftype;
suis perdue!!!! j'ai testé déjà fichier tout en minuscule tout tout tout, en plus au debut ça marchait et puis plus rien du coup je pige pas et ça fait 100 fois que je relis ce code snnif

n°1325156
jedebute75
Posté le 14-03-2006 à 15:36:01  profilanswer
 

bah oui je sais :-((( faut que je trouve m'enfin si je reste dessus des jours aidez moi hein!!! je connaissais pas la fonction, je vais regarder ça de plus près. merci tous les deux!!!

n°1325160
omega2
Posté le 14-03-2006 à 15:43:16  profilanswer
 

Si t'as rien dans $ftype, alors faut vérifier le contenu de la variable qui sertà la remplir. Et si t'as pas ce qu'il faut dans celle là, alors il faudra vérifier si t'as l'info ailleur, sinon, tu seras foutus.

n°1325169
jedebute75
Posté le 14-03-2006 à 15:53:47  profilanswer
 

ouais bah c pas gagné!!! pourtant formulaire de téléchargement classique :  
<form action="document.php" method="post" ENCTYPE="multipart/form-data" name="form" id="form">
            <tr>  
              <td colspan="2" align="right" valign="top">&nbsp;</td>
            </tr>
            <tr>  
              <td align="right" valign="top"><strong><font color="#3E78B3" size="2">Envoyer  
                le document </font></strong><font color="#3E78B3" size="2"><strong>:</strong></font></td>
              <td> <input type="file" name="fichier">
                <br> <input type="submit" value="Télécharger" class="BtnForm">  
 
et le fameux document.php c le code de tout à l'heure!!!
 
m'enfin je sais, je sais, je cherche...

n°1325186
Djebel1
Nul professionnel
Posté le 14-03-2006 à 16:05:44  profilanswer
 

As-tu seulement fait ce que l'on te conseille ?
Reprenons :
 
1) $ftype est vide. Donc tu vérifies la variable qui sert à la remplir, à savoir $HTTP_POST_FILES['fichier']['type']. Encore une fois je suis près à parier que tu n'as pas afficher cette variable pour débugger.
 
2) S'il y a un problème avec $HTTP_POST_FILES['fichier']['type'], alors tu continues le débuggage : tu regardes tout le  tableau $HTTP_POST_FILES['fichier'] avec print_r($HTTP_POST_FILES['fichier']).
 
3) S'il y a un problème avec ce tableau, alors c'est qu'il y a un problème avec la soumission de ton formulaire.
 
A ce moment, et seulement à ce moment, tu nous demandes quel est le problème si ça ne marche pas. En effet, on est pas là pour faire tout le débuggage à ta place, il est plus que normal que tu suives ces étapes. Sinon tu  vas ouvrir 10 posts par jour avec ce genre de questions, pour lesquelles on te donnera toujours les mêmes réponses : "qu'affiche la variable bidule ? tu as vérifier la condition machin ?"
 
Mon message n'a pas pour but de t'agresser, juste de te faire prendre conscience de ce gros manque de débuggage personnel.
 
 
 
Sinon, d'autres choses qui n'ont rien à voir :
- ça fait un bail qu'on utilise plus $HTTP_POST_FILES ou $HTTP_POST_VARS, il faut utiliser $_FILES, $_POST, $_GET, etc ...
 
- un tableau en html ne sert pas à faire de la mise en forme, mais à afficher des données tabulaires. Dans ton cas, tu utilises un tableau pour mettre en forme ton formulaire, ce qui alourdit la page, et va poser problème sous certaines conditions de navigation (personnes mal-voyantes, téléphones portables, ...). Ceci touche au problème d'accessibilité des pages, ceci est primordial et tu DOIS te renseigner sur ce point.
Je te conseille donc de révisier ton html et tes CSS, avant de te mettre au PHP. Un excellent site en français : http://www.alsacreations.com/
Tu pourras notamment y apprendre diverses manières de faire un formulaire correctement
 
Il n'est bien sur pas nécessaire de maitriser à fond le xhtml et les CSS pour se mettre au PHP, néanmoins, il faut en connaitre un minimum vital.


Message édité par Djebel1 le 14-03-2006 à 16:11:32
n°1325193
jedebute75
Posté le 14-03-2006 à 16:15:24  profilanswer
 

ok, je comprend!!! c normal. pour le tableau c pas mon idée et je sais bien que ça alourdit mais ton message m'aidera à imposer mon point de vue à mon equipier qui connait que ça et qui croit que c génial d'utiliser un tableau ;-). bon j'arrête d'innonder le forum et me lance dans mon debuggage. merci pour les infos.

n°1325201
gatsu35
Blablaté par Harko
Posté le 14-03-2006 à 16:26:01  profilanswer
 

et le formulaire d'envoi on peut le voir ?

mood
Publicité
Posté le 14-03-2006 à 16:26:01  profilanswer
 

n°1325209
jedebute75
Posté le 14-03-2006 à 16:37:28  profilanswer
 

oui je l'ai posté (voir ci-dessus).
sinon c bizzard Djebel, ça ne me renvoie rien en testant... mais je continue!!!

n°1325662
jedebute75
Posté le 15-03-2006 à 10:32:19  profilanswer
 

bonjour,
je suis désolée... mais je n'y arrive pas... la fonction de debbug ne me renvoie rien, ma page "document.php" affiche quoi que je fasse l'erreur "1", j'avoue être perdu!!! mon site est sous spip mais je ne voit pas en quoi ça pourrait être le probleme!!! j'ai déjà epluché le forum SPIP. quoi qu'il en soit, quand je poste le document de l'espace privé de spip, aucun probleme, il s'enregistre dans ma base mais par la page de formulaire que j'ai créé (voir code en haut) riennn!!! là je ne sais plus trop quoi faire... mise à part refaire tout :-((

n°1325751
Djebel1
Nul professionnel
Posté le 15-03-2006 à 12:42:25  profilanswer
 

si print_r($_FILES) n'affiche rien c'est que ton formulaire a pas marché correctement. Mais je ne vois pas ce qui bug à la vue de ton script

n°1326483
jedebute75
Posté le 16-03-2006 à 09:16:31  profilanswer
 

moi non plus, j' ai repris mon scripte des dizaines de fois... avec toute ma bonne volonté...rien, je ne vois pas, d'autant que ça marchait très au debut, puis d'un coup cette fameuse erreur!!! c dingue!!! bah tant pis! merci beaucoup pour toutes tes infos surtout en matière de debugg ;-)


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

  probleme de réléchargement de fichier

 

Sujets relatifs
Probleme de tableauprobleme scrol bar( svp de l'aide)
[CSS] pseudo-element : problème...Importer un fichier texte dans Excel avec bouton
Problème pour écrire dans un fichierProbleme Java ou Fai?
[Problème] [mediawiki] Comment uploader beaucoup d'imagesProbleme d'affichage avec IE
Probleme de placement avec float 
Plus de sujets relatifs à : probleme de réléchargement de fichier


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