我正在研究一个应用程序,该应用程序必须下载一些外部资源并使其可通过环中的公用/静态目录进行访问。我如何确定正确的文件系统路径
但是..我有一个问题,将资源保存到我的应用程序的静态目录中,当开发我使用ring-jetty-adapter时,测试&生产服务器正在运行tomcat。
我说:网络内容的“公共”我leiningen项目,并在项目的根目录增加了“公共”目录下,然后我一直在使用HTTP代理和鸭流的下载功能:
(defn download [file-name url] (h/http-agent url :handler (fn [agnt] (let [fname file-name] (with-open [w (d/writer fname)] (d/copy (h/stream agnt) w))))))
如果我从repl启动jetty并使用savepath:“public/my.file”,则下载的文件将正确放置在“public”目录中。 但是当我使用warcat文件将其部署到tomcat时,它会在tomcat根目录中查找“public”目录,而不是在应用程序上下文路径下查找。
我尝试添加一个中间件包装来确定上下文路径,并从那里建立正确的保存路径,但如果应用程序在适配器或者运行我找不到任何的方式来访问的HttpServlet或一种方法来确定它是在特定的环境下部署的。
这里包装:
(defn wrap-context-info [handler] (fn [req] (let [resp (handler req)] (assoc resp :servlet (:servlet req) :req (:servlet-request req)))))
两个:servlet和:REQ是零。
好这是我尝试做: – drankard 2010-12-01 10:22:05