删除文章

确定要删除这篇文章吗?

取消
确定

删除数据库中没有使用到的图片

     阅读(81)  2020-09-03 06:05:21

有个web/upload目录下有许多图片,但是很多图片是测试时产生的在博客文章中并没有使用,所以写个小程序判断哪些图片没有用到然后删除。

步骤

  1. 连接数据库
  2. 读取目录下的所有图片
  3. 根据图片名字在数据库中查找
  4. 如果没有找到文章就删除图片

源码

package main

import (
        "fmt"
        "github.com/jinzhu/gorm"
        _ "github.com/jinzhu/gorm/dialects/mysql"
        "io/ioutil"
        "log"
        "os"
        "path"
)

var PostBaseFields = "id, _id, author, title, profile, pv, tags, type, created_at, updated_at"
type Post struct {
        gorm.Model
        Id      string `gorm:"column:_id"`
        Author  string `gorm:"column:author"`
        Title   string `gorm:"column:title"`
        Profile string `gorm:"column:profile"`
        Content string `gorm:"column:content"`
        Pv      int    `gorm:"column:pv"`
        Tags    string `gorm:"column:tags"`
        Type    int    `gorm:"column:type"`
}

func main() {
        db, err := gorm.Open("mysql", "root:password@tcp(118.xxx.xxx.xxx:3306)/blog?charset=utf8&parseTime=true")
        if err != nil {
                log.Fatal(err)
        }

        const webDir = "/root/web/upload"
        files, err := ioutil.ReadDir(webDir)
        if err != nil {
                log.Fatal(err)
        }

        for _, file := range files {
                key := file.Name()
                var posts []Post
                err = db.Select(PostBaseFields).Where("content like ?", "%"+key+"%").Find(&posts).Error
                if err == nil && len(posts) == 0 {
                        fmt.Println(key)
                        os.Remove(path.Join(webDir, file.Name()))
                }
        }
}

文章评论

Keep it simple,stupid
文章数
347
今日访问
961
今日IP数
445
最近评论

在家赚钱: 在家赚钱 <a href="http://www.265250.com/" >在家赚钱</a> 已阅,感谢站长分享!
liangzi: 不错 谢谢分享
tujiaw: registerThreadInactive:如果当前没有激活的线程,就去激活线程,让等待的线程去执行任务。
hgzzx: 佩服佩服。 请教:registerThreadInactive的作用是什么?
xuehaoyun: 很不错,来围观一下
tujiaw: 抱歉csdn code服务关闭了,这个代码我也找不到了
回到顶部