瀏覽代碼

delay delete temp file

LinkLeong 1 年之前
父節點
當前提交
657cbe5c41
共有 3 個文件被更改,包括 22 次插入6 次删除
  1. 二進制
      __debug_bin782867005
  2. 16 0
      pkg/utils/file/file.go
  3. 6 6
      route/v1/file.go

二進制
__debug_bin782867005


+ 16 - 0
pkg/utils/file/file.go

@@ -77,6 +77,22 @@ func RMDir(src string) error {
 	return nil
 }
 
+func RemoveAll(dir string) error {
+	err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
+		if err != nil {
+			return err
+		}
+		if !info.IsDir() {
+			return os.Remove(path)
+		}
+		return nil
+	})
+	if err != nil {
+		return err
+	}
+	return os.Remove(dir)
+}
+
 // Open a file according to a specific mode
 func Open(name string, flag int, perm os.FileMode) (*os.File, error) {
 	f, err := os.OpenFile(name, flag, perm)

+ 6 - 6
route/v1/file.go

@@ -581,12 +581,12 @@ func PostFileUpload(c *gin.Context) {
 				c.JSON(http.StatusInternalServerError, model.Result{Success: common_err.SERVICE_ERROR, Message: err.Error()})
 				return
 			}
-
-			if err := file.RMDir(tempDir); err != nil {
-				logger.Error("error when trying to remove `"+tempDir+"`", zap.Error(err))
-				c.JSON(http.StatusInternalServerError, model.Result{Success: common_err.SERVICE_ERROR, Message: err.Error()})
-				return
-			}
+			go func() {
+				time.Sleep(11 * time.Second)
+				if err := file.RMDir(tempDir); err != nil {
+					logger.Error("error when trying to remove `"+tempDir+"`", zap.Error(err))
+				}
+			}()
 		}
 	} else {
 		out, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE, 0o644)