En utilisant Compojure, hoquet et anneau pour télécharger un fichier
-
11-10-2019 - |
Question
Pour télécharger un fichier sur un serveur j'écris dans Clojure je besoin d'une forme de client qui ressemble à quelque chose comme ceci:
<form action="/file" method="post" enctype="multipart/form-data">
<input name="file" type="file" size="20" />
<input type="submit" name="submit" value="submit" />
Mais je ne peux pas trouver la documentation hoquet ou Compojure pour créer une forme comme celui-ci. L'exemple que j'ai ressemble à ceci:
[:h2 "Choose a file to upload"]
:form {:method "post" :action "/upload"}
[:input.math {:type "text" :name "a"}] [:span.math " + "]
[:input.math {:type "text" :name "b"}] [:br]
Alors, ma question est où est la documentation de trouver comment cela doit être modifié pour une forme qui va télécharger un fichier?
La solution
Le support de téléchargement de fichier pour Compojure se trouve dans le middleware multipart-params
Ring. Voici quelques exemples de la façon de l'utiliser:
- https://gist.github.com/562624/1df418e4851e68952fc466713f377df2e653afdb
- http: // www .prodevtips.com / 2010/12/19 / file-upload-avec-clojure-ring-et-compojure /
Toujours jeter un oeil à la documentation middleware Ring, il est plein d'un grand code!
Mise à jour : N'a pas lu votre question dès la première fois! Pour générer une forme comme celui-ci:
<form action="/file" method="post" enctype="multipart/form-data">
<input name="file" type="file" size="20" />
<input type="submit" name="submit" value="submit" />
</form>
Cela devrait faire l'affaire:
[:form {:action "/file" :method "post" :enctype "multipart/form-data"}
[:input {:name "file" :type "file" :size "20"}]
[:input {:type "submit" :name "submit" :value "submit"]]
Je l'ai fait de la mémoire, il est donc non testé.
Autres conseils
[:input {:type "submit" :name "submit" :value "submit"]]
}
manquant
[:input {:type "submit" :name "submit" :value "submit"]}]