Как вы обслуживаете динамически создаваемые файлы на кольцевом сервере clojure?

У меня есть веб-сервер, который сохраняет файлы, загруженные пользователем, в собственную файловую систему в папке resources. Он отлично работает в разработке, но в производстве файлы не могут быть обслужены.

Я пробовал wrap-file и wrap-resource, ни один не работает.


person danieltan95    schedule 15.06.2020    source источник


Ответы (1)


Ни 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))}))
person danieltan95    schedule 15.06.2020