cot_shaurma
@cot_shaurma
Java и всего понемногу

Как работать с файловой системой в Spring Boot?

Я нашёл несколько гайдов по этому поводу, но вот что меня волнует...

Во-первых сейчас, пока я работаю с проектом, файлы будут сохраняться мне на компьютер. Но потом, когда я загружу проект на сервер, то там же другая файловая система, другие директории и т.д. - как с этим быть? Плюс компьютер у меня на Win, а сервер скорее всего будет на Linux.

Во-вторых - а как быть с безопасностью? Как-то же надо фильтровать то, что мне загружают? А то скрипт какой-нибудь загрузят или ещё что-то. Как это вообще отслеживать?

Как отслеживать оставшееся место на диске?
  • Вопрос задан
  • 487 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Но потом, когда я загружу проект на сервер, то там же другая файловая система, другие директории и т.д. - как с этим быть?

Ну во-первых, как отметил коллега Dmitry Roo нужно использовать относительные пути.
Во-вторых, у вас должны быть несколько файлов конфигурации (с разными профилями). Например, для dev upload.path будет /home/Desktop/uploads, а для prod профиля будет uploads/ и т.д.

Во-вторых - а как быть с безопасностью? Как-то же надо фильтровать то, что мне загружают? А то скрипт какой-нибудь загрузят или ещё что-то. Как это вообще отслеживать?

Обычно, делают проверку MIME type, как на клиентской стороне, так и на стороне сервера.

Например, средствами js можно запретить загрузку других файлов, кроме image/* и т.д.
Тоже самое делаю на сервере. Проверяют формат загруженного файла и если он не соответствует ожидаемому MIME type, то выбрасывают исключение и удаляют файл.

Как отслеживать оставшееся место на диске?

Смотря, что подразумевается в данном случае. Если хостинг, то java.nio подойдет. А если это amazon s3 или другой сервис, то смотрите документацию к REST API.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
xez
@xez Куратор тега Java
TL Junior Roo
Но потом, когда я загружу проект на сервер, то там же другая файловая система, другие директории и т.д.

Для этого придумали относительные пути, конфигурационные файлы, симлинки и т.д...

как быть с безопасностью?
не давать пользователю загружать что попало. То что пользователь загрузил - никогда не запускать.

Как отслеживать оставшееся место на диске?

Java io
Java nio
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы