首页 > 解决方案 > 如何强制图像立即出现

问题描述

我正在使用这种方法上传文件:

@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";

?

标签: javahtmlspring

解决方案


显示图像的应用程序会在您替换它之前加载它,因此您必须检测何时发生更改。您可以使用 WatchService 执行此操作,此处已回答: Java 如何检测文件更改


推荐阅读