删除内容同时删除富本编辑器上传的图片文件

297 阅读1分钟

思路核心:

查找当前文章所有富本上传的图片路径,组成数组(正则匹配)。

1、查找图片路径组成数组

      //校验通过执行查找图片路径,删除
      let imgReg = /<img.*?(?:>|\/>)/gi;
      //匹配src属性
      let srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;
      let arr = ideas.details.match(imgReg);
      let newArr = []
      // alert('所有已成功匹配图片的数组:'+arr);
      arr.forEach(v=>{
        let src = v.match(srcReg);
         //获取图片地址
        if(src[1]){
          //alert('已匹配的图片地址'+(i+1)+':'+src[1]);
          if(src[1].indexOf("http://")!=-1||src[1].indexOf("https://")!=-1)// !=-1含有 ==-1不含有
          {
          }else{
            newArr.push(src[1])
          }
        }  
      })


2、逻辑是先删除文章,成功后删图片,最后封装成公共模块方便调用

/**
 * @ 查找内容 图片 路径 返回数组
 * @ 参数 X 表示 内容,返回 图片数组
 */
exports.searchImgUrl=function(x){
    //校验通过执行查找图片路径,删除
    let imgReg = /<img.*?(?:>|\/>)/gi;
    //匹配src属性
    let srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;
    let arr = x.match(imgReg);
    let newArr = []
    // alert('所有已成功匹配图片的数组:'+arr);
    arr.forEach(v=>{
        let src = v.match(srcReg);
         //获取图片地址
        if(src[1]){
            //alert('已匹配的图片地址'+(i+1)+':'+src[1]);
            if(src[1].indexOf("http://")!=-1||src[1].indexOf("https://")!=-1)// !=-1含有 ==-1不含有
            {
            }else{
            newArr.push(src[1])
            }
        }
    })
    return newArr
}

最后 调用

      const pubFun = require('../../config/public');
      let newArr = pubFun.searchImgUrl(ideas.details)      newArr.forEach(v=>{
        console.log(v)
        fs.unlink(path.normalize(__dirname+'/../../public' +v), function(err) {
          if (err) {
            return console.error(err);
          }
          console.log("文件删除成功!");
        });
      })