clojure - 你如何在 clojure 环形服务器中提供动态创建的文件?

标签 clojure ring

我有一个 Web 服务器,用于将用户上传的文件保存到 resources 文件夹中的 native 文件系统。它在开发中运行良好,但在生产中,无法提供文件。

我已经尝试了 wrap-filewrap-resource,都不起作用。

最佳答案

wrap-filewrap-resource 都不起作用,因为动态内容是在打包的 jar 之外提供的,但两个中间件都希望项目在 jar 中, as seen in the source.

相反,您实际上可以将文件对象的输入流直接传递给响应的 :body! Ring 会妥善处理并正常服务,如 seen in the source here .

示例代码:

(defn image-handler 
  [request]
  (as-> request r
        (:path-params r)
        (:filename r)
        {:status  200
         :body (io/input-stream (str <your-base-path-here> r))}))

关于clojure - 你如何在 clojure 环形服务器中提供动态创建的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62391926/

相关文章:

java - 在作为代理工作的 Nginx Ring 处理程序中读取服务器名称

clojure - 将 defmulti 转换为 defprotocol

clojure - Clojure Ring/Compojure REPL 中的动态处理程序更新

clojure - Clojure 中的头部保留

Clojure.spec:如何规范对随机变化敏感的数据结构?

clojure - 我在 Ring 应用程序中看到的 #' 是什么?

clojure - ring:将 http 请求的正文读取为字符串

emacs - 在swank-clojure repl中模仿花括号匹配

clojure - Clojure 中 BigInt 与 BigInteger 的用例