Использование Compojure, Hiccup и Ring для загрузки файла - PullRequest
5 голосов
/ 17 января 2011

Чтобы загрузить файл на сервер, который я пишу в 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 ]

6 голосов
/ 17 января 2011

Поддержка загрузки файлов для Compojure находится в промежуточном программном обеспечении multipart-params Ring. Вот несколько примеров того, как его использовать:

Всегда смотрите документацию по промежуточному программному обеспечению 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"]]

Я сделал это по памяти, поэтому он не проверен.

1 голос
/ 01 мая 2013
[:input {:type "submit" :name "submit" :value "submit"]]

Отсутствует }

[:input {:type "submit" :name "submit" :value "submit"]}]
...