使用Compojure,Hiccup和Ring上传文件

时间:2011-01-17 11:30:36

标签: file-upload clojure hiccup

要将文件上传到我在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 个答案:

答案 0 :(得分:6)

可以在multipart-params Ring中间件中找到对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"]]

我是从记忆中完成的,所以没有经过测试。

答案 1 :(得分:1)

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

缺少}

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