下载文件而不是在浏览器中显示

时间:2016-02-22 07:51:55

标签: clojure ring luminus

我使用lein new luminus my-app +postgres +auth +cljs +swagger从luminus应用模板创建了一个全新的应用。在生成的文件src/clj/my_app/routes/home.clj中,创建了以下compojure路由:

(GET "/docs" [] (response/ok (-> "docs/docs.md" io/resource slurp)))

当我尝试访问localhost:3000/docs时,只需下载文件而不是在浏览器中显示。它发生在Chrome和Safari上。

它似乎与ring.util.http-response/ok有关,因为我也可以使用此路线重现行为:

(GET "/hi" [] (response/ok "hi"))

文件" hi"然后下载文件内容"嗨"。

关于造成这种情况的任何想法?

1 个答案:

答案 0 :(得分:1)

您的回复处理程序没有为您的回复正文设置Content-Type

您可以使用ring.util.http-response/content-type执行此操作:

(GET "/hi" [] (-> "hi"
                  (response/ok)
                  (response/content-type "text/plain")))

你也可以将你的处理程序包装在ring.middleware.content-type/wrap-content-type中,这样标题就会被猜到"基于URI的文件扩展名。