Использование Compojure, Hiccup и Ring для загрузки файла
Чтобы загрузить файл на сервер, который я пишу в Clojure, мне нужна форма клиента, которая выглядит примерно так:
<form action="/file" method="post" enctype="multipart/form-data">
<input name="file" type="file" size="20" />
<input type="submit" name="submit" value="submit" />
Однако я не могу найти документацию по Hiccup или в Compojure, чтобы создать такую форму. Образец у меня выглядит так:
[: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]
Поэтому мой вопрос: где найти документацию, чтобы найти, как это следует изменить, чтобы создать форму, которая будет загружать файл?
2 ответа
Поддержка загрузки файлов для Compojure может быть найдена в multipart-params
Кольцо промежуточное. Вот несколько примеров того, как его использовать:
- https://gist.github.com/562624/1df418e4851e68952fc466713f377df2e653afdb
- http://www.prodevtips.com/2010/12/19/file-uploads-with-clojure-ring-and-compojure/
Всегда смотрите документацию по промежуточному программному обеспечению Ring, она полна отличного кода!
Обновление: не прочитал ваш вопрос правильно с первого раза! Чтобы создать форму, подобную этой:
<form action="/file" method="post" enctype="multipart/form-data">
<input name="file" type="file" size="20" />
<input type="submit" name="submit" value="submit" />
</form>
Это должно делать свое дело:
[:form {:action "/file" :method "post" :enctype "multipart/form-data"}
[:input {:name "file" :type "file" :size "20"}]
[:input {:type "submit" :name "submit" :value "submit"]]
Я сделал это по памяти, так что это не проверено.
[:input {:type "submit" :name "submit" :value "submit"]]
Отсутствует }
[:input {:type "submit" :name "submit" :value "submit"]}]