Но потом, когда я загружу проект на сервер, то там же другая файловая система, другие директории и т.д. - как с этим быть?
Ну во-первых, как отметил коллега
Dmitry Roo нужно использовать относительные пути.
Во-вторых, у вас должны быть несколько файлов конфигурации (с разными профилями). Например, для dev
upload.path
будет
/home/Desktop/uploads
, а для prod профиля будет
uploads/
и т.д.
Во-вторых - а как быть с безопасностью? Как-то же надо фильтровать то, что мне загружают? А то скрипт какой-нибудь загрузят или ещё что-то. Как это вообще отслеживать?
Обычно, делают проверку MIME type, как на клиентской стороне, так и на стороне сервера.
Например, средствами js можно запретить загрузку других файлов, кроме
image/*
и т.д.
Тоже самое делаю на сервере. Проверяют формат загруженного файла и если он не соответствует ожидаемому MIME type, то выбрасывают исключение и удаляют файл.
Как отслеживать оставшееся место на диске?
Смотря, что подразумевается в данном случае. Если хостинг, то java.nio подойдет. А если это amazon s3 или другой сервис, то смотрите документацию к REST API.