我正在研究一個應用程序,該應用程序必須下載一些外部資源並使其可通過環中的公用/靜態目錄進行訪問。我如何確定正確的文件系統路徑
但是..我有一個問題,將資源保存到我的應用程序的靜態目錄中,當開發我使用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