0
点赞
收藏
分享

微信扫一扫

解决上传图片后图片回显的缓存问题

Sikj_6590 2024-08-23 阅读 28

今天在重构项目的时候,发现上传图片之后,因为后台返回的图片地址和原来的一样,回显的图片没有改变,而是显示浏览器缓存的旧图片。

从根本上解决这个问题就是在图片路径带上一个时刻变化的参数,比如当前时间的时间戳。

    /**
     * 图片上传
     * @param file MultipartFile对象
     * @param directory 文件上传目录
     * @return String 图片的相对路径
     */
    public String upload(MultipartFile file, String directory) throws IOException {
        boolean result = check(file);

        if (result) {
            // 得到请求参数中的数据ID
            String id = HttpUtils.getRequest().getParameter("id");

            // 获取文件名
            String originalFilename = file.getOriginalFilename();
            assert originalFilename != null;
            String fileName = getBase(directory.charAt(1) + "") + Integer.parseInt(id)
                    + StringUtils.getFileType(originalFilename);
            // 创建目标对象
            File targetFile = new File(root + directory, fileName);

            // 保存文件
            file.transferTo(targetFile);

            StringBuilder url = new StringBuilder();

            url.append(directory).append("/").append(fileName);
            // 解决图片缓存问题
            url.append("?timestamp=").append(System.currentTimeMillis());

            return url.toString();
        }

        return null;
    }

这是图片上传工具类的上传图片的代码,在图片路径后面拼接了当时间戳,这样浏览器就不会从缓存中获取图片了,而是获取最新的图片~

举报

相关推荐

0 条评论