Mit Compojure, Schluckauf und Ring zum Hochladen einer Datei
-
11-10-2019 - |
Frage
Um eine Datei auf einen Server hochladen ich schreibe in Clojure brauche ich ein Client-Formular, dass in etwa so aussieht:
<form action="/file" method="post" enctype="multipart/form-data">
<input name="file" type="file" size="20" />
<input type="submit" name="submit" value="submit" />
Allerdings kann ich nicht in die Dokumentation zu Schluckauf oder in Compojure finden Sie ein Formular wie diese zu erstellen. Die Probe Ich habe sieht wie folgt aus:
[: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]
Also meine Frage ist, wo ist die Dokumentation zu finden, wie diese geändert werden sollen, um eine Form zu machen, die eine Datei hochladen, werden?
Lösung
Die Datei-Upload-Unterstützung für Compojure in der multipart-params
Ring Middleware zu finden. Hier einige Beispiele dafür, wie es zu benutzen:
- https://gist.github.com/562624/1df418e4851e68952fc466713f377df2e653afdb
- http: // www .prodevtips.com / 2010/12/19 / Datei-Upload-mit-clojure-Ring-und-compojure /
Haben Sie immer einen Blick auf Ring-Middleware-Dokumentation, es ist voll von großem Code!
Aktualisieren : Haben Sie Ihre Frage gleich beim ersten Mal nicht lesen! Um ein Formular wie diese zu erzeugen:
<form action="/file" method="post" enctype="multipart/form-data">
<input name="file" type="file" size="20" />
<input type="submit" name="submit" value="submit" />
</form>
Das sollte es tun:
[:form {:action "/file" :method "post" :enctype "multipart/form-data"}
[:input {:name "file" :type "file" :size "20"}]
[:input {:type "submit" :name "submit" :value "submit"]]
Ich habe es aus dem Gedächtnis gemacht, so dass es nicht getestet ist.
Andere Tipps
[:input {:type "submit" :name "submit" :value "submit"]]
Missing }
[:input {:type "submit" :name "submit" :value "submit"]}]