Utilizzando Compojure, Hiccup e anello per caricare un file
-
11-10-2019 - |
Domanda
Per caricare un file su un server che sto scrivendo in Clojure Ho bisogno di un modulo client che sembra qualcosa di simile:
<form action="/file" method="post" enctype="multipart/form-data">
<input name="file" type="file" size="20" />
<input type="submit" name="submit" value="submit" />
Tuttavia non riesco a trovare la documentazione per Hiccup o in Compojure per creare un modulo come questo. Il campione che ho assomiglia a questo:
[: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]
Quindi la mia domanda è dove si trova la documentazione di trovare come questo dovrebbe essere modificato per fare una forma che caricare un file?
Soluzione
Il supporto per il caricamento di file Compojure può essere trovata nel multipart-params
Anello middleware. Ecco alcuni esempi di come usarlo:
- https://gist.github.com/562624/1df418e4851e68952fc466713f377df2e653afdb
- http: // www .prodevtips.com / 2010/12/19 / file-uploads-con-clojure-anello-e-compojure /
hanno sempre uno sguardo al anello documentazione middleware, è pieno di grande codice!
Aggiorna : Non ha letto la tua domanda giusta la prima volta! Per generare un modulo come questo:
<form action="/file" method="post" enctype="multipart/form-data">
<input name="file" type="file" size="20" />
<input type="submit" name="submit" value="submit" />
</form>
Questo dovrebbe fare il trucco:
[:form {:action "/file" :method "post" :enctype "multipart/form-data"}
[:input {:name "file" :type "file" :size "20"}]
[:input {:type "submit" :name "submit" :value "submit"]]
L'ho fatto a memoria, quindi è non testati.
Altri suggerimenti
[:input {:type "submit" :name "submit" :value "submit"]]
mancante }
[:input {:type "submit" :name "submit" :value "submit"]}]