go本地文件的页面展示及删除功能


新建控制器OperLogFileController

文件的页面展示功能:页面展示的文件名不可以有后缀名

//文件列表展示
func (c *OperLogFileController) OperLogFileList() {
    var Data []string
    files, _ := ioutil.ReadDir("./download/backup")
    //备份文件总数
    total := len(files)
    for _, file := range files {
        fullFileName := file.Name()
        fileNameWithSuffix := path.Base(fullFileName) //获取文件名带后缀
        fileSuffix := path.Ext(fileNameWithSuffix) //获取文件后缀
        fileNameOnly := strings.TrimSuffix(fileNameWithSuffix, fileSuffix)//获取文件名
        Data = append(Data, fileNameOnly)
    }
    result := make(map[string]interface{})
    result["total"] = total
    result["rows"] = Data
    c.Data["json"] = result
    c.ServeJSON()
}

删除功能(支持批量删除)

func (c *OperLogFileController) OperLogFileDelete() {
    var LocalFileSlices []string
    //获取要删除的文件名
    fileNames := c.GetString("fileNames")
    //将获取到的多个文件名放入切片fileSlices中
    fileSlices := make([]string, 0, len(fileNames))
    for _, filename := range strings.Split(fileNames, ",") {
        fileSlices = append(fileSlices, filename)
    }
    //获取本地文件,并将文件名放入切片slices中
    files, _ := ioutil.ReadDir("./download/backup")
    for _, file := range files {
        LocalFileSlices = append(LocalFileSlices, file.Name())
    }
    //将存放本地文件名的切片LocalFileSlices放入map集合中
    fileMap := make(map[string]struct{})
    for _, v := range LocalFileSlices {
        fileMap[v] = struct{}{}
    }
    //遍历fileslices切片中的文件名
    for _, file := range fileSlices {
        //检查元素是否存在
        if _, ok := fileMap[file]; ok{
            err := os.Remove("./download/backup/" + file)
            if err != nil {
                //删除失败
                c.jsonResult(enums.JRCodeFailed, fmt.Sprintf("删除失败"), 0)
            } else {
                //删除成功
                c.jsonResult(enums.JRCodeSucc, "删除成功", 0)
            }
        } else {
            c.jsonResult(enums.JRCodeFailed, fmt.Sprintf("备份文件中不存在该文件"), 0)
        }
    }
}