Вы уверены, что ваш первый пример работает? Я думаю, что конфигурация работает только когда вызывается как static_path(@conn, "/my_project/assets/myPicture.png)
.
Так что ваш второй пример работает, когда вызывается как static_path(@conn, "/my_project/another_path/assets/myPicture.png")
Похоже, у вас есть :at
и :to
варианты перепутаны. Это из Plug.Static
документов :
:at
- пути запроса для доступа к активам stati c. Это должна быть строка.
:from
- путь к файловой системе для чтения ресурсов stati c. Это может быть: строка, содержащая путь к файловой системе, атом, представляющий имя приложения (где ресурсы будут обслуживаться с priv/static
), или кортеж, содержащий имя приложения и каталог для обслуживания ресурсов (помимо priv/static
) ).
Итак, чтобы ответить на заголовок вашего вопроса ( как я могу обслуживать stati c файлы по пути не по умолчанию? ); если вы хотите обслуживать файлы по другому пути, а не по умолчанию priv/static
в папке вашего приложения, не должно ли это быть:
plug Plug.Static, at: "/uploads", from: "/some/other/path"
И показывать изображение, расположенное на вашем диске в /some/other/path/myPicture.png
(это абсолютный путь, не относящийся к вашему приложению):
<img class="picture" src="<%= static_path(@conn, "/uploads/myPicture.png") %>">
(Если это все еще не работает и , вы добавили его как новый Plug.Static
после по умолчанию: поместите его до по умолчанию stati c plug.)
Edit:
И, конечно, если вы хотите обслуживать stati c ресурсов из пути по умолчанию (priv/static
в папке вашего приложения), но с пользовательским URL вы можете сделать:
plug Plug.Static, at: "/some/path", from: :my_project
и использовать их как:
<img class="picture" src="<%= static_path(@conn, "/some/path/myPicture.png") %>">