删除文件时移除本地资源文件

我们在删除数据库的文件数据的时候,也要把相对应的本地资源文件一并删除,这样才不会给电脑留下一大堆没有用的东西。
下面我们继续对删除进行操作
在这里插入图片描述

在数据库中获取该图片的全名,并执行删除操作,这里我是在上传文件的时候把文件名称保存在数据库里,现在我要把文件名称从数据库查询出来,再和path自定义的一串路径形成一条完整的文件路径

 /**
     * 删除本地文件
     */
    @RequestMapping(value = "/deleteDM",produces="application/json;charset=utf-8")
    @ResponseBody
    public Map<String, Object> deleteDM(Integer documentid,HttpServletRequest request){
        Map<String, Object> map = new HashMap<String, Object>();
        if (documentid!=0){
            try{
                document document=FileService.selectFileById(documentid);
                int U=FileService.deleteByDMID(documentid);

                System.out.println(U);
                if (U>0){
                    String path ="D:\\uploadFile";
                    File f=new File(path, document.getFile());
                    File f2=new File(path, document.getPicture());
                    try {
                        System.out.println(f.getCanonicalPath());
                        DeleteFolder(f.getCanonicalPath());
                        DeleteFolder(f2.getCanonicalPath());
                    } catch (IOException e) {
                        e.printStackTrace();
                        map.put("code", 0);
                        map.put("msg", "删除失败");
                    }
                    map.put("code", 1);
                    map.put("msg", "删除成功"+U+"条数据");
                }else {
                    map.put("code", 0);
                    map.put("msg", "删除失败");
                }
            }catch(Exception e){
                map.put("code", 0);
                map.put("msg", "删除失败");
            }
        }else{
            map.put("code", 0);
            map.put("msg", "数据异常!");
        }
        return map;
    }

删除成功数据库的数据后调用方法 DeletFolder。

/**
     *  根据路径删除指定的目录或文件,无论存在与否
     *@param sPath  要删除的目录或文件
     *@return 删除成功返回 true,否则返回 false。
     */
    public @ResponseBody static boolean DeleteFolder(String sPath) {
        boolean  flag = false;
        File file = new File(sPath);
        // 判断目录或文件是否存在
        if (!file.exists()) {  // 不存在返回 false
            return flag;
        } else {
            // 判断是否为文件
            if (file.isFile()) {  // 为文件时调用删除文件方法
                return deleteFile(sPath);
            } else {  // 为目录时调用删除目录方法
                return deleteDirectory(sPath);
            }
        }
    }

判断文件目录是否存在,删除的是目录还是文件

  /**
     *  根据路径删除指定的目录或文件,无论存在与否
     *@param sPath  要删除的目录或文件
     *@return 删除成功返回 true,否则返回 false。
     */
    public @ResponseBody static boolean DeleteFolder(String sPath) {
        boolean  flag = false;
        File file = new File(sPath);
        // 判断目录或文件是否存在
        if (!file.exists()) {  // 不存在返回 false
            return flag;
        } else {
            // 判断是否为文件
            if (file.isFile()) {  // 为文件时调用删除文件方法
                return deleteFile(sPath);
            } else {  // 为目录时调用删除目录方法
                return deleteDirectory(sPath);
            }
        }
    }

删除文件

删除目录

/**
     * 删除目录(文件夹)以及目录下的文件
     * @param   sPath 被删除目录的文件路径
     * @return  目录删除成功返回true,否则返回false
     */
    public @ResponseBody static boolean deleteDirectory(String sPath) {
        //如果sPath不以文件分隔符结尾,自动添加文件分隔符
        if (!sPath.endsWith(File.separator)) {
            sPath = sPath + File.separator;
        }
        File dirFile = new File(sPath);
        //如果dir对应的文件不存在,或者不是一个目录,则退出
        if (!dirFile.exists() || !dirFile.isDirectory()) {
            return false;
        }
        boolean flag = true;
        //删除文件夹下的所有文件(包括子目录)
        File[] files = dirFile.listFiles();
        for (int i = 0; i < files.length; i++) {
            //删除子文件
            if (files[i].isFile()) {
                flag = deleteFile(files[i].getAbsolutePath());
                if (!flag) break;
            } //删除子目录
            else {
                flag = deleteDirectory(files[i].getAbsolutePath());
                if (!flag) break;
            }
        }
        if (!flag) return false;
        //删除当前目录
        if (dirFile.delete()) {
            return true;
        } else {
            return false;
        }
    } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#源达人分享计划# 1. 支持PHP8 2. 支持HTTPS环境 3. 支持MySQL8+ 4. 修改PHPCMS目录为CMS 5. 验证码修改 6. 支持H5上传,移除Flash上传 7. 修改后台缩略图裁切图片,移除Flash裁切改为H5裁切 8. 后台附件上传修改为H5上传,会员头像上传修改为H5上传 9. 修改后台界面,修改后台登录界面、后台锁屏界面、后台内容界面 10. 修改前台界面 11. 修复已知BUG 12. 修复已知安全漏洞 13. 增加安装自定义后台管理登录地址 14. 去掉PHPSSO模块、去掉Video及视频库相关、去掉Upgrade在线升级 15. 去除了已被废弃的视频模块和视频模型 16. 修复安装DNS解析错误提示 17. 手机电脑同生成Html 18. 安装文件不检查index.html 19. 安装完删除安装目录 20. 安装删除友情链接、广告数据 21. 添加开启附件分站状态 22. 整合UEditor编辑器 23. UEditor整合上传水印 24. UEditor上传储存数据 25. 附件选择框UI 26. 优化附件选择器界面 27. 添加讯飞关键词获取API、百度关键词获取API,原官方关键词接口已失效 28. 后台添加复制,可复制一条新的到任何栏目或站点 29. 添加头像字段 30. 修改头像,重新写入库 31. 添加组图模式,图片模式、文本模式 32. 百度编辑器上传视频播放器由embed改成video标签 33. 添加本地关键词获取API,原官方关键词接口已失效 34. 添加站点自定义字段、栏目自定义字段、单网页自定义字段 35. 添加一键导入微信文章字段 36. 添加Word导入编辑器字段 37. 增加编辑器可下载微信图片本地化功能 38. 编辑器远程下载图片加入对尺寸的压缩处理 39. 后台登录密码传输改为加密模式 40. 添加生成静态页进度条 41. 编辑器添加本地图片自动上传 42. 升级为CK4.16.1编辑器 43. 无用文件清理 44. 修改生成缩略图函数thumb 45. 修改获取用户头像函数get_memberavatar 46. 修改原来上传类处理文件删除原上传类处理文件,新增Upload上传类处理文件 47. 修改原来图片处理类文件 48. 修改IP库类处理文件 49. 新增二维码处理类文件 50. 新增Input类处理文件 51. 新增判断是否是移动端终端is_mobile函数 52. 新增二维码qrcode函数 53. 新增秒转化间sec2time函数 54. 新增友好间显示函数dr_fdate 55. 新增间显示函数dr_date 56. 新增递归创建文件夹create_folder函数 57. 新增调用远程数据dr_catcher_data函数 58. 新增获取远程附件扩展名get_file_ext函数 59. 新增栏目面包屑导航dr_catpos函数 60. 新增手机栏目面包屑导航dr_mobile_catpos函数 61. 新增手机分页函数mobilepages 62. 新增重新日志记录函数log_message 63. 新增目录扫描dr_dir_map函数 64. 新增文件扫描dr_file_map函数 65. 新增数据返回统一格式dr_return_data函数 66. 新增格式化输出文件大小format_file_size函数 67. 新增附件信息get_attachment函数 68. 新增统一返回json格式并退出程序dr_json函数 69. 新增将数组转换为字符串dr_array2string函数 70. 新增将字符串转换为数组dr_string2array函数 71. 新增根据文件扩展名获取文件预览信息dr_file_preview_html函数 72. 新增IP转为实际地址ip2address函数 73. 新增当前IP实际地址ip_address_info函数 74. 新增清除HTML标记clearhtml函数 75. 新增提取关键字dr_get_keywords函数 76. 新增提取描述信息dr_get_description函数 77. 新增获取内容中的缩略图get_content_img函数 78. 新增HTML实体字符转换code2html函数 79. 新增判断存在于数组中dr_in_array函数 80. 新增字符长度dr_strlen函数 81. 新增将路径进行安全转换变量模式dr_safe_replace_path函数 82. 新增站点手机配置 83. 新增是否需要检查外部访问 84. 新增关联字段 85. 新增信息表格字段 86. 新增单文件上传字段 等等等………… 增加在线升级
el-upload组件可以用于上传和删除文件。想要删除文件,可以使用before-remove钩子函数,该函数在删除文件之前触发。它接受上传的文件文件列表作为参数,如果返回false,将停止删除,不会执行on-remove事件。 另外,el-upload组件中的上传成功事件on-success、改变事件on-change和删除事件on-remove都可以使用相同的方法。为了确定刚刚上传的文件属于哪个组件,可以在组件中使用标识来区分不同的文件。 总结来说,el-upload组件可以通过before-remove钩子来删除文件,同可以使用标识来区分不同的文件组件。这样就可以实现上传和删除文件的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [el-upload组件说明汇总,实现上传、点击下载、删除功能等](https://blog.csdn.net/whwhhhh/article/details/122928203)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [el-upload上传组件的动态添加;el-upload动态上传文件;el-upload区分文件是哪个组件上传的。](https://blog.csdn.net/i_am_a_div/article/details/125545564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【JavaScript源代码】vue+el-upload实现多文件动态上传.docx](https://download.csdn.net/download/mmoo_python/72280652)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值