2011-01-17 14 views
5

Para cargar un archivo a un servidor que estoy escribiendo en Clojure Necesito un formulario de cliente que se ve algo como esto:Compojure, Hipo y el anillo de cargar un archivo

<form action="/file" method="post" enctype="multipart/form-data"> 
<input name="file" type="file" size="20" /> 
<input type="submit" name="submit" value="submit" /> 

sin embargo no puedo encontrar la documentación para Hipo o en Compojure para crear un formulario como este. La muestra que tengo es el siguiente:

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

Así que mi pregunta es ¿dónde está la documentación para saber cómo debe ser modificado para hacer una forma que cargar un archivo?

Respuesta

6

El soporte de carga de archivos para Compojure se puede encontrar en el middleware de anillo multipart-params. He aquí algunos ejemplos de cómo usarlo:

Siempre echar un vistazo a la documentación de middleware anillo, que está lleno de un gran código!

Actualización: ¡No leí tu pregunta correctamente la primera vez! Para generar una forma como ésta:

<form action="/file" method="post" enctype="multipart/form-data"> 
    <input name="file" type="file" size="20" /> 
    <input type="submit" name="submit" value="submit" /> 
</form> 

Que debe hacer el truco:

[:form {:action "/file" :method "post" :enctype "multipart/form-data"} 
[:input {:name "file" :type "file" :size "20"}] 
[:input {:type "submit" :name "submit" :value "submit"]] 

lo he hecho de la memoria, por lo que es puesto a prueba.

+0

Gracias señor, que me ayudó a correr. Todavía no estoy seguro de por qué el ejemplo con el que comencé tiene input.math (no puedo encontrar documentación sobre el origen de las matemáticas). También me cuesta encontrar la documentación del anillo, ¿o solo necesito compilarlo con autodoc? – justinhj

+0

La documentación del anillo se puede encontrar allí: http://mmcgrana.github.com/ring/ –

+1

También la parte .math es un atajo para agregar un atributo de clase a elementos HTML. En Hiccup, las palabras clave de las etiquetas se pueden aumentar con el atributo id y class en una forma de selector de CSS, por ejemplo: '[: span # my_id.class1.class2 ...]' es equivalente a '[: span {: id" my_id ": clase "class1 class2"} ...] ' –

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

Missing }

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