2011-01-17 1 views
5

Чтобы загрузить файл на сервер, который я пишу в Clojure мне нужен вид клиента, который выглядит примерно так:Использование Compojure, икота и кольцо, чтобы загрузить файл

<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] 

Так что мой вопрос, где есть документация, чтобы найти, как это должно быть изменено, чтобы сделать форму, которая будет загружать файл?

ответ

6

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

Всегда взглянуть на документацию промежуточного кольца, она полна большого кода!

Обновление: Не прочитал ваш вопрос в первый раз! Чтобы создать форму, как этот:

<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"]] 

Я сделал это из памяти, так что это не тестировалась.

+0

Спасибо сэр, что помог мне получить работу. Я все еще не уверен, почему в примере, с которого я начал работать, есть input.math (я не могу найти документацию о том, откуда приходит математика). Мне также сложно найти документацию на звонки, или мне нужно просто создать ее с помощью autodoc? – justinhj

+0

Документацию по кольцу можно найти там: http://mmcgrana.github.com/ring/ –

+1

Также .math часть является ярлыком для добавления атрибута класса к элементам HTML. В Hiccup ключевые слова тегов могут быть дополнены атрибутом id и class в способе выбора CSS, например: '[: span # my_id.class1.class2 ...]' эквивалентно '[: span {: id" my_id ": class "class1 class2"} ...] ' –

1
[:input {:type "submit" :name "submit" :value "submit"]] 

Отсутствующие }

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