kkfileview踩坑记录-清缓存+删除本地下载的文件

kkfileview在清除缓存时仅删除源文件,但未删除本地临时文件,导致文件更新后预览仍显示旧版本。解决方法包括在删除文件时一并清理缓存和本地文件,尤其是处理重名文件时要注意已转换的文件后缀。通过特定代码实现文件缓存及本地副本的彻底删除。
摘要由CSDN通过智能技术生成

kkfileview自带的每天凌晨三点清除所有缓存的方法是会把所有的文件全部清楚的
自带的删除文件的方法是删除源文件,但是如果之前预览生成了临时本地文件和类似转换过的pdf文件以及图片目录,是不会给你删除的。
这样就有一个坑:因为你只是删除的源文件,并没有删除缓存到本地的问题,所以当你修改源文件重新上传之后,预览到的还是之前缓存的文件。所以在删除文件的时候要清楚缓存+删除缓存到本地的文件。
还有一个坑:上传一个a.pdf然后预览,然后再上传一个a.docx然后你会发现,你预览的文件是之前pdf的文件,重名坑就这么突然的出现了。

先说解决重名的坑,代码如下:

// 文件:OfficeFilePreviewImpl
//String pdfName = fileName.substring(0, fileName.lastIndexOf(".") + 1) + (isHtml ? "html" : "pdf");
//加上一个后缀来区分,这样就不会有重名问题了
String pdfName = fileName.replace(".", "-") + "." + (isHtml ? "html" : "pdf");

注意当你删除office文件时记得你此时缓存到本地的文件名已经是加了后缀的文件了!!!

根据URL删除文件缓存代码:

// 我是通过接口删除的
@GetMapping("/cleanCache")
    public void cleanCache(ServletResponse servletResponse, String urlPath, Model model, HttpServletRequest req) throws IOException {
   
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.addHeader("Access-Control-Allow-Origin", "*");
        if (urlPath == null || urlPath.length() == 0) {
   
            logger.info("URL异常:{}", urlPath);
            response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
            response.setHeader("Content-Type", "text/html; charset=UTF-8");
            response.getWriter().println("NULL地址不允许清缓存");
            return;
        }
        String fileUrl;
        fileUrl = WebUtils.decodeUrl(urlPath);
        String fullFileName = WebUtils.getFileNameFromURL(fileUrl);

        FileAttribute fileAttribute = fileHandlerService.getFileAttribute(fileUrl, req);
        String suffix = fileAttribute.getSuffix();
        // 重名问题遗留的文件名后缀处理
        if (FileType.OFFICE.equals(fileAttribute.getType())) {
   
            boolean isHtml 
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值