5218 sujets

Sémantique web et HTML

Bonjour tout le monde, Testant les possibilités de "input file" dans un formulaire, je me demande comment le navigateur transmet le document, du moins en html pur.

Activer sur la page le bouton "input file" engage en effet la navigation dans le disque pour désigner le fichier choisi. Une fois cela fait, il indique le nom du document, sans son cheminement (ce qui est logique en terme de confidentialité) mais j'imagine qu'il connait ce cheminement, et qu'il l'utilisera.

Lors de la lecture en POST de ce formulaire, déclenchée par le bouton "submit", le log me renvoie donc effectivement le contenu du champ "input file" et accessoirement celui du bouton : &vh_fileImage=monImage.jpg&vh_ok=Envoyer

Mais je ne vois rien qui matérialise le transfert du fichier à recevoir.

J'ai bien vu une notion d'ajout à l'url d'une expression telle que "?file=monImage.jpg" mais le serveur ne peut pas connaître le nom du document au moment du chargement du formulaire, c'est à dire avant l'utilisation du bouton "input file".

Donc je sens qu'il me manque quelque-chose et avant de mobiliser trop de temps temps à défricher, je serais preneur de pistes à explorer.

Grand merci d'avance aux bonnes âmes.
Modifié par mango (17 Sep 2020 - 15:32)
Modérateur
Et l'eau,

Si tu ne parles d'une technologie précise, on peut pas vraiment t'aider. Sachant qu'en html, tu n'as pas moyen de voir le transfert.

Donc php ? Python ? JS ? Java ? Ruby ?

Regarde ce tuto en php : Upload de fichiers (par HTTP)

En Python, c'est un peu plus compliqué que ça. Tu peux le faire via Flask ou Django Smiley loveu

En, JS tu as un bon paquet sur npn : express-fileupload

À noter que dans ton formulaire, il ne faudra pas oublier l'attribut adéquate pour un upload de fichier. Sinon, ça ne marchera pas.
Bonjour, je ne comprends pas vraiment ta question , donnes un code de ce que tu fait.

Si tu veux télécharger sans PHP, utilises le HTML5

<a href="/mesavatars/un nom bizare.jpg" download="nom-a-moi">xxx</a>

tu aura bien sur ton site ton fichier mais il s’appellera: nom-a-moi.jpg
Merci "niuxe", Comme indiqué en début de mon message, je cherche quelque-chose en html pur.

Mais si ce n'est vraiment pas possible, je vais regarder en JS que j'utilise dans quelques circonstances.

Merci encore et bonne soirée.
Merci jean-Pierre BRUNEAU,

Ce que je vois dans ta suggestion qui n'est pas encore testé chez moi c'est "download=" placé avec l'url.

Je vais donc creuser cette piste et je te tiendrai au courant.

Sinon le code en test est très simple.

<form method="post" action="monUrl">
<input name="vh_fileImage" type="file" accept="image/gif, image/jpg, image/jpeg, image/png" required>
<input type="submit" name="vh_ok" value="Envoyer">
</form>
Désolé jean-Pierre BRUNEAU,

À la lecture attentive des documentations sur "download=" ce n'est pas ce que je recherche. Cette fonction transfère des données vers le navigateur. Je vais donc voir du côté de JS.

Merci en tout cas et bonne fin de semaine.
Modérateur
bonjour,

En principe tu devrait trouvé tes réponses ici https://developer.mozilla.org/fr/docs/Web/HTML/Element/Input/file

Il y a possibilité de configurer plusieurs choses .

C'est ton serveur qui va recevoir la requete de ton navigateur, et c'est de la que tu pourras récuperer ce qu'envoie le navigateur. si de l'autre coté , il n'y a pas de script pour traiter ton formulaire, il ne se passeras rien du tout

Enfin, coté navigateur et js, il y a ceci : https://developer.mozilla.org/fr/docs/Web/API/File/Using_files_from_web_applications qui te permet par exemple d'afficher des miniatures et autres infos de tes images avant de valider l'envoie vers le serveur.

Bonne continuation.
Merci gcyrillus, et désolé de n'avoir pas lu plus tôt ton message.

J'ai en effet bien compris que contrairement aux autres champs formulaires de type "input" le document sélectionné ne sera pas contenu dans le log (à lire par le serveur).

Mais la page que tu indiques à propos du JS devrait constituer une solution à mon problème.

Merci encore et bon week end.