java.io.File
действует на файловую систему локального диска и абсолютно ничего не знает о контексте, в котором он запущен. Не следует ожидать, что он найдет «правильное» расположение, когда вы передаете относительный веб-путь * 1003. * in. Он станет относительным к текущему рабочему каталогу , который зависит от того, как вы запустили среду. Вы не хотите зависеть от этого.
Вы можете использовать ServletContext#getRealPath()
для преобразования относительного веб-пути в абсолютный путь к файловой системе локального диска.
String relativeWebPath = "/WEB-INF/uploads";
String absoluteFilePath = getServletContext().getRealPath(relativeWebPath);
File uploadedFile = new File(absoluteFilePath, FilenameUtils.getName(item.getName()));
// ...
Тем не менее, я надеюсь, что вы знаете, что папка развертывания не подходит для загруженных файлов, которые должны быть сохранены навсегда. Все будет потеряно при повторном развертывании веб-приложения. См. Также Как записать файл в папку ресурса / изображения приложения?