[PHP] Problème de formulaire avec fichier

Répondre
Partager Rechercher
Mon probleme c'est que j'arrive pas à recupérer le fichier que je passe dans mon formulaire :

Code PHP:

$contenu .= "<form method=POST action=importg.php enctype=\"multipart/form-data\">\n";
      
$contenu .= "textfile:<br>\n";
      
$contenu .= "<INPUT TYPE=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"100000\">\n";
      
$contenu .= "<input type=file name=\"userfile\">\n";
      
$contenu .= "<input type=submit value=Go>\n";
      
$contenu .= "</form>\n";
print(
$contenu); 
que je traite ici :
Code PHP:

if (!($HTTP_POST_FILES[userfile][tmp_name]))
        echo 
"<font color=red>Pas de fichier &agrave; ouvrir</font><br>\n";
    else
    {
       
$file=$HTTP_POST_FILES[userfile][tmp_name];

       
$upload_file file($file);
       
$texteg implode("",$upload_file);
..... 
J'utilise $HTTP_POST_FILES car j'ai une version de php qui n'utilise pas encore les nouvelles variables ($_POST, $_FILES ...)
Et j'ai a chaque fois le message Pas de fichier à ouvrir
Sachant aussi que pour faire le traitement j'ai repris des source de mon projet de fin d'année qui marchait nickel à l'IUT(serveur linux) et sur mon pc (easy php).
Là je bosse sur une machine Linux.

[edit] pour virer les \" que j'avais rajouter avant de poster, mais que ça marche pas quand meme sans
Re: [PHP] Problème de formulaire avec fichier
Citation :
Provient du message de Wis/Thunder

Sachant aussi que pour faire le traitement j'ai repris des source de mon projet de fin d'année qui marchait nickel à l'IUT(serveur linux) et sur mon pc (easy php).
Là je bosse sur une machine Linux.
Je bosse sur une machine qui n'est pas sous easy php.
C'est un SLIS (http://slis.ac-grenoble.fr)
Donc red hat 7.3 je crois.
Et il me faudrait un hebergeur en psql et uploader 10Mo pour tester le tout

Si ça peut servir extrait de php.ini à l'endroit upload.
Code PHP:

;;;;;;;;;;;;;;;;
File Uploads ;
;;;;;;;;;;;;;;;;
file_uploads    On                            Whether to allow HTTP file uploads
;upload_tmp_dir =                       ; temporary directory for HTTP uploaded files (will use system default if not specified)
upload_max_filesize 2M                    Maximum allowed size for uploaded files 
ATTENTION !
COPIER COLLER SAUVAGE POWA

Code PHP:

if (!($HTTP_POST_FILES["userfile"]["tmp_name"]))

// Et non pas

if (!($HTTP_POST_FILES["userfile\"][\"tmp_name\"]))

// Car dans 
$contenu tu dois bien metre \", mais surtout pas dans $HTTP_POST_FILES qui est un tableau. 
Et tu refais la même erreur plusieurs fois ... tss le monsieur il a pas verifier ses fondamentaux !
Citation :
Provient du message de Dirty Hanny
http://www.php.net/manual/tw/feature...ad.php#AEN5793

Amuse toi bien
Exactement la page que j'ai d'ouverte dans le tab à coté de celui ou ya celle ou je poste.
j'ai essayé pas mal de truc, la première section 18.2, le script de la function upload un peu plus bas et que dalle à chaque fois
Citation :
Provient du message de Dirty Hanny
BAh !

Et upload_tmp_dir il puire de la croupe ?
Faudrais ptete lui filer un directory qui sois R/W à php.
Mouais j'vais essayer merci
Bon faut debugger,

Recupére le max d'infos en provenance de PHP plutot que mettre un message aussi laconique
le but c'est de comprendre pourquoi ça foire.

nom de fichier mal renseigné ?
fichier trop gros ?
etc.

tu as tout un tas de variable à recuperer dans HTTP_POST_FILE, recupére le tout et analyse tout ça.

PS : et s'il te plait, utilise un peu mieux les double quote / simple quote, parfois un script qui foire c'est pas plus bête que ça.
Donc obligation de mettre des double quote pour séparer les tag html ( method = "POST", etc ) sinon privé de dessert
Citation :
Provient du message de Dirty Hanny
Bon faut debugger,

Recupére le max d'infos en provenance de PHP plutot que mettre un message aussi laconique
le but c'est de comprendre pourquoi ça foire.

nom de fichier mal renseigné ?
fichier trop gros ?
etc.

tu as tout un tas de variable à recuperer dans HTTP_POST_FILE, recupére le tout et analyse tout ça.

PS : et s'il te plait, utilise un peu mieux les double quote / simple quote, parfois un script qui foire c'est pas plus bête que ça.
Donc obligation de mettre des double quote pour séparer les tag html ( method = "POST", etc ) sinon privé de dessert
Oui chef
Le pb de HTTP_POST_FILE c'est que en mettant ça :
Code PHP:

echo "type : ".$HTTP_POST_FILES["userfile"]["type"]." name : ".$HTTP_POST_FILES["userfile"]["name"]." tmpname : ".$HTTP_POST_FILES["userfile"]["tmp_name"]." size : ".$HTTP_POST_FILES["userfile"]["size"] ; 

ben j'ai le droit à :
type : name : tmpname : size :

ma variable est vide

Sachant que mon fichier fait 48 octet (ben oui c une importation de données venant d'un fichier texte et j'ai aps envie de mee taper 36000 lignes de fichier à entrer et autant d'utilisateur a creer avant (la fonction fait l'affectation user/groupe))
Donc il a rien fait

Lol. Forcement ça aide pas.
Remarque on savait qu'il avait rien fait, mais maintenant on sait que le html fait qu'dal.

( au fait, met tjrs des balises de CRLF pour séparer )

Bon, je sais pas comment c'est organiser ton script mais voici ce que je te conseille :

tu fais 2 fichiers, un html, un php
le html contient le form d'import, sans php.
le php se contente de logger ce que renvoie $HTTP_POST_FILES.

Je te conseille de laisser trainer tes yeux sur des trucs html tout fait / déja fait histoire de voir si ça marche chez toi, et d'upload un fichier qui soit le plus petit possible ( > 0 octet quand même ).

L'analyse des variables de http_post_files te donnera la solution.

allez bon app !

EDIT : 48 octet pour 36000 lignes ? tu te moque de moa ?
Au minimum ca fait 36k ... si les lignes font 1 chr, se dont je doute.
N'oublie pas que tu as une limite à 2 Mo ( ini php ) et 100ko ( UPLOAD_MAX_SIZE )
Citation :
Provient du message de Dirty Hanny
Donc il a rien fait

Lol. Forcement ça aide pas.
Remarque on savait qu'il avait rien fait, mais maintenant on sait que le html fait qu'dal.

( au fait, met tjrs des balises de CRLF pour séparer )

Bon, je sais pas comment c'est organiser ton script mais voici ce que je te conseille :

tu fais 2 fichiers, un html, un php
le html contient le form d'import, sans php.
le php se contente de logger ce que renvoie $HTTP_POST_FILES.

Je te conseille de laisser trainer tes yeux sur des trucs html tout fait / déja fait histoire de voir si ça marche chez toi, et d'upload un fichier qui soit le plus petit possible ( > 0 octet quand même ).

L'analyse des variables de http_post_files te donnera la solution.

allez bon app !

EDIT : 48 octet pour 36000 lignes ? tu te moque de moa ?
Au minimum ca fait 36k ... si les lignes font 1 chr, se dont je doute.
N'oublie pas que tu as une limite à 2 Mo ( ini php ) et 100ko ( UPLOAD_MAX_SIZE )
Bon ben je testerai apres manger
Sinon je disais que je voulais pas me palucher 36000 lignes d'exemples donc mon fichier fais que 48 octet pasqu'il doit contenir 4 ligne a tout peter
Bon app' a toi aussi
Talking
Ca marche
Apres quelques essais, je me suis rendu compte que j'avais un bug dans mes formulaires (en ai 2 dans la page)

En tous cas merci quand meme pour l'upload directory (j'y avais pensé mais bon comme c'est dit qu'il prend celle par defaut si yen a pas .. )
Et puis sans avoir essayé dans des pages à part j'aurai pas vu que ça marchait que mes forms buggait.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés