Page 1 sur 1

Traitement d'upload de fichiers

Posté : 13 oct. 2006, 21:39
par Léonard
Bonjour,

J'essaie d'ajouter à un formulaire (qui fonctionnait parfaitement !) la possibilité d'envoyer un fichier.

Jusqu'ici, mon formulaire était organisé comme suit :
Formulaire A ---> Analyse ---> Formulaire B avec affichage des erreurs éventuelles.

(Je ne me suis jamais habitué à la logique des formulaires qui bouclent sur eux-mêmes !).

Seulement, je ne parviens pas dans mon formulaire B à signaler les erreurs liées à l'envoi du fichier (erreur de taille ou erreur de format, par exemples).

D'où mes premières questions : ne puis-je pas récupérer sur mon formulaire B les données sur le fichier recueillies dans le formulaire A ? Le fichier serait-il déjà détruit par le serveur ?

Ma page d'analyse se termine par une redirection vers le formulaire B. Or, si j'essaie de déplacer le fichier téléchargé à ce stade avec move_uploaded_file(), ma redirection ne fonctionne plus.

Cette expérience me conduit à une deuxième question : déplacement de fichier et redirection sont-ils compatibles ? En effet, je n'ai pas l'impression d'envoyer des données au navigateur avec move_uploaded_file().

En résumé, pour recourir au téléchargement de fichier sur un formulaire, est-on donc obligé de recourir à un formulaire qui boucle sur lui-même ? Sinon, comment faire ?

Merci pour vos avis éclairés et pardon pour cette littérature. :(

Cordialement,

L.

Re: Traitement d'upload de fichiers

Posté : 13 oct. 2006, 22:05
par Invité

En résumé, pour recourir au téléchargement de fichier sur un formulaire, est-on donc obligé de recourir à un formulaire qui boucle sur lui-même ? Sinon, comment faire ?
L.
Je ne pense pas qeu tu sois obligé mais cela sera surement plus clair et dans ce cas tu n'auras plus besoin de faire une redirection.

En gros, tu dois faire :
Si formulaire envoyé alors j'analyse et j'affiche les erreurs se besoin
sinon j'affiche mon formulaire

pour savoir si ton formulaire est envoyé, il suffit d'utiliser isset d'une de tes variables envoyées par le form

j'espere ne pas dire trop de betise :)

Posté : 13 oct. 2006, 22:42
par Cyrano
Avec un formulaire unique ou deux formulaires, ça fonctionnera aussi bien, mais utiliser deux formulaire complique la manoeuvre pour rien. Voir la FAQ avec un exemple de validation de formulaire complexe sur un unique fichier. Le traitement d'un champ de type file n'est pas abordé, mais le principe est le même.

De toutes façons, ce qu'il faut voir, c'est que la validation se fera sur le fichier indiqué dans l'attribut action de la balise <form> du premier formulaire. C'est dans ce code (qui peut être en tête du formulaire lui-même) que sera validé ou non le fichier téléchargé.

L'avantage du formulaire unique, c'est qu'on remet beaucoup plus facilement les valeurs déjà saisie dans les champs si il y a erreur lors de la validation.