goframe框架,文件上传于清理上传垃圾

网站技术 ayflying 906℃ 评论

上传文件到服务器临时文件夹,每次上传后进行检测,在超过100个文件以后,删除一半文件

以下是代码实例

func (c *Controller) UploadFile(ctx context.Context, req *v1.UploadFileReq) (res v1.UploadFileRes, err error) {

    file := req.File
    if file.Size > 1024*1024*50 {
       g.RequestFromCtx(ctx).Response.Writeln(g.Map{"err": "上传的文件超过50mb", "size": file.Size})
       return
    }
    path := "runtime/uploadTemp" //目录路径
    files, err := req.File.Save(path, true)
    res.File = filepath.Join(path, files)
    res.Path = path
    res.FileName = files

    //文件超过100个以后,每次删除一个老文件
    maxFiles := 100          // 最大文件数
    delFiles := maxFiles / 2 //每次删除一半
    dir, err := os.ReadDir(path)
    if len(dir) > maxFiles {
       // 按修改时间排序文件列表(最旧的文件在前)
       sort.SliceStable(dir, func(i, j int) bool {
          fi1, _ := dir[i].Info()
          fi2, _ := dir[j].Info()
          return fi1.ModTime().Before(fi2.ModTime())
       })
       for i := 0; i < len(dir)-maxFiles+delFiles; i++ {
          filePath := path + "/" + dir[i].Name()
          err2 := os.Remove(filePath)
          if err2 != nil {
             g.Log("文件删除失败" + filePath)
          } else {
             g.Log("成功删除文件" + filePath)
          }
       }
    }

    return
}


转载请注明:七彩悠悠博客 | 心悠悠 情悠悠 » goframe框架,文件上传于清理上传垃圾

高效,专业,悠悠博客

联系我们