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

dan*_*n95 3 clojure ring

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

我试过wrap-filewrap-resource,都不起作用。

dan*_*n95 5

wrap-file不会也wrap-resource不会工作,因为动态内容是在打包的 jar 之外提供的,但两个中间件都希望项目在 jar 中,如源代码中所示。

相反,您实际上可以将文件对象的输入流直接传递:body给响应!Ring 将正确处理并正常提供服务,如此处的来源所示

示例代码:

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