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) } } }