ivaneye.com

Luminus手册-静态资源

Static resources

在noir.io下有多个访问静态资源的帮助方法。 你可以通过调用resource-path来获取public目录的路径。

Handling file uploads

上传文件通过noir.io空间下的upload-file方法来实现,upload-file接受一个路径和文件的map。 例如我们有一个upload.html文件:

    <h2>Upload a file</h2>
    <form action="/upload" enctype="multipart/form-data" method="POST">
        <input id="file" name="file" type="file" />
        <input type="submit" value="upload" />
    </form>

我们可以这样来处理文件上传。

(ns myapp.upload
  ...
  (:require [upload-test.views.layout :as layout]
            [noir.response :as response]
            [noir.io :as io]))
(defn upload-page []
  (layout/render "upload.html"))
(defn handle-upload [file]
  (io/upload-file "/" file)
  (response/redirect
    (str "/" (:filename file))))
(defroutes upload-routes
  (GET "/upload" [] (upload-page))
  (POST "/upload" [file] (handle-upload file)))

Serving static resources

你可以使用get-resource通过相对路径来加载public目录中的资源,例如:

(get-resource "/md/outline.md")

上面的代码将返回在包含public/md/outline.md下资源的clojure.java.io/resource。 最后,我们可以使用slurp-resource来读取文件的内容:

(slurp-resource "/md/outline.md")