Size: a a a

2020 February 17

LT

Ludmila Tretyakova in Kotlin JVM
Добрый день, вопрос по Ktor. Как организовать хранение и доступ к файлам так, чтобы они не добавлялись сервером в build. Например, много изображений, нужен доступ к ним по ссылке. Типа того как Django работает с файлами  из media.
источник

АО

Алексей Овсянников in Kotlin JVM
Ludmila Tretyakova
Добрый день, вопрос по Ktor. Как организовать хранение и доступ к файлам так, чтобы они не добавлялись сервером в build. Например, много изображений, нужен доступ к ним по ссылке. Типа того как Django работает с файлами  из media.
Добрый, читали это?
источник

LT

Ludmila Tretyakova in Kotlin JVM
Читала, статика индексируется и переносится в папку build при запуске ktor, получается дублирование данных. Для небольших объемов данных это оправдано. В моем случае данных (картинок) много, их нужно раздавать как-то по-другому. Не могу понять как.
источник

D

Danil Yudov in Kotlin JVM
а где у вас статика лежит?
источник

VP

Vladimir Petrakovich in Kotlin JVM
Ludmila Tretyakova
Читала, статика индексируется и переносится в папку build при запуске ktor, получается дублирование данных. Для небольших объемов данных это оправдано. В моем случае данных (картинок) много, их нужно раздавать как-то по-другому. Не могу понять как.
Это если её в ресурсы класть.
А если просто положить рядом и указать путь к ней, такого быть не должно.
источник

LT

Ludmila Tretyakova in Kotlin JVM
Статика в /resources. Там хранятся css, js  и тп. Мне нужно раздавать пользовательские данные. Например человек пришел, добавил  картинку, потом в профиле ее получил
источник

LT

Ludmila Tretyakova in Kotlin JVM
Vladimir Petrakovich
Это если её в ресурсы класть.
А если просто положить рядом и указать путь к ней, такого быть не должно.
Спасибо, попробую
источник

AT

Alexey Tkachenko in Kotlin JVM
Ludmila Tretyakova
Статика в /resources. Там хранятся css, js  и тп. Мне нужно раздавать пользовательские данные. Например человек пришел, добавил  картинку, потом в профиле ее получил
Так у вас же не статика, вам не туда надо смотреть
источник

AT

Alexey Tkachenko in Kotlin JVM
Alexey Tkachenko
Так у вас же не статика, вам не туда надо смотреть
Вам надо просто при запросе картинки получить её из хранилища и отдать клиенту с нужными заголовками, всё как в других http-серверах
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexey Tkachenko
Вам надо просто при запросе картинки получить её из хранилища и отдать клиенту с нужными заголовками, всё как в других http-серверах
Так если хранилище - ФС, то всё уже готово
источник

LT

Ludmila Tretyakova in Kotlin JVM
Подумала, про nginx, что эти файлы должен он раздавать
источник

AT

Alexey Tkachenko in Kotlin JVM
Vladimir Petrakovich
Так если хранилище - ФС, то всё уже готово
Как бы да, но не совсем. Я бы делал не через статику, чтобы избежать всяких проблем с кешами, проверками прав доступа и прочей фигнёй
источник

AT

Alexey Tkachenko in Kotlin JVM
Ludmila Tretyakova
Подумала, про nginx, что эти файлы должен он раздавать
Если нет требований, что один пользователь не должен видеть файлы других, то почему бы и нет
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexey Tkachenko
Как бы да, но не совсем. Я бы делал не через статику, чтобы избежать всяких проблем с кешами, проверками прав доступа и прочей фигнёй
Так это в ktor всё равно можно навесить при надобности, а файлы он сам раздаёт, с заголовками и прочим
источник

LT

Ludmila Tretyakova in Kotlin JVM
А если разграниченим прав доступа будет заниматься ktor, а по ссылке с ktor-a выдавать nginx. Это нормальный подход?
источник

AT

Alexey Tkachenko in Kotlin JVM
Vladimir Petrakovich
Так это в ktor всё равно можно навесить при надобности, а файлы он сам раздаёт, с заголовками и прочим
Ok, наверняка это будет работать
источник

VP

Vladimir Petrakovich in Kotlin JVM
Ludmila Tretyakova
А если разграниченим прав доступа будет заниматься ktor, а по ссылке с ktor-a выдавать nginx. Это нормальный подход?
Не очень. Однажды выдав ссылку, её нельзя будет отозвать.
источник

AT

Alexey Tkachenko in Kotlin JVM
Ludmila Tretyakova
А если разграниченим прав доступа будет заниматься ktor, а по ссылке с ktor-a выдавать nginx. Это нормальный подход?
А как вы сделаете так, чтобы файлы раздавал nginx, а права проверял ktor? Научите nginx спрашивать разрешения у ктора? Не проще ли тогда сделать так, чтобы ктор сразу и файлы отдавал?
источник

LT

Ludmila Tretyakova in Kotlin JVM
Vladimir Petrakovich
Так это в ktor всё равно можно навесить при надобности, а файлы он сам раздаёт, с заголовками и прочим
А как это в ktor навесить? Например, храню файлы на директорию выше, потом читаю файлы и раздаю или я не правильно поняла?
источник

AT

Alexey Tkachenko in Kotlin JVM
Ludmila Tretyakova
А как это в ktor навесить? Например, храню файлы на директорию выше, потом читаю файлы и раздаю или я не правильно поняла?
ну да, читаете файл в виде потока байтов и отдаёте пользователю в респонсе
источник