Я загружаю файлы с помощью этого метода:
@Override
public void store(MultipartFile file, AnimalEntity animalEntity) {
String filename = animalEntity.getNameString() + animalEntity.getAge() + ".jpg";
try (InputStream inputStream = file.getInputStream()) {
Files.copy(inputStream, this.rootLocation.resolve(filename), StandardCopyOption.REPLACE_EXISTING);
}
} catch (IOException e) {
throw new StorageException("Failed to store file " + filename, e);
}
И показ изображения с:
<img alt = "" src = "" th:alt = "${dog.id}" th:src = "@{${dog.getNameString()} + ${dog.getAge()} + '.jpg'}">
Изображения видны только после перезапуска приложения. Я не знаю, почему и как решить эту проблему.
Кстати Как я могу указывать файлы вместо использования всего пути:
private String location = "C:\\Users\\XXX\\Documents\\Projekty\\IntelliJ\\shelter\\src\\main\\resources\\static\\photos";
?




Приложение, отображающее изображение, загружает его до того, как вы замените его, поэтому вам придется обнаруживать изменения. Вы можете сделать это с помощью WatchService, на который уже ответили здесь: Java, как обнаружить изменения файла
Вы можете создать папку в пользовательском каталоге, которая будет использоваться обоими приложениями. Чтобы получить путь пользователя, используйте System.getProperty("user.home").
Хорошо, я прочитал о WatchService и не знаю, где его использовать. Я сохраняю файл, используя метод, упомянутый выше, а затем просто загружаю его с помощью HTML-тега <img>. Я не знаю, какой фрагмент кода должен быть обработан после обнаружения изменения каталога.
После того, как вы обнаружите изменение в каталоге, вы просто перезагрузите изображение из файла. Тогда у вас будет обновленное изображение в вашей программе. Кроме того, если у вас может быть много файлов в этом каталоге, может быть целесообразно проверить, действительно ли файл был изменен, прежде чем перезагружать его. docs.oracle.com/javase/9/docs/api/java/io/…
Я попробую это. А ссылка на папку? Я не хочу использовать путь "C:\\Users\\XXX\\Documents\\Projekty\\IntelliJ\\shelter\\src\\main\\resources\\static\\photos"; потому что на другом компе может не работать