gin框架的web文件的上传

直接上代码:

添加浏览器上传到服务器的路由
首先
-
router.POST("/upload",Upload)

实现代码:

package upload
import (   
  "os"   
  "net/http"    
  "github.com/gin-gonic/gin"        
  "api/models/result/proto"
  )
  
const filePath = "/xxxx"

func fileExist(filename string)bool{   
     _, err := os.Stat(filename)   
   if err == nil {       
      return true   
   }
       
   if os.IsNotExist(err) {       
     return false   
   }   
   return false
}
func upload(c *gin.Context) {
    result := &ResultProto.ResultMessage{        
    Code:    http.StatusOK,       
    Message: "Successfully!",   
    }
    
    file, err := c.FormFile("upload")   
    if err != nil {
        result := &ResultProto.ResultMessage{
        Code:    http.StatusBadRequest,           
        Message: "Failed!",        
        }        
        c.JSON(http.StatusBadRequest, gin.H{"result": result,})    }
        
    fileName := file.Filename   
    log.Info("fileName:\n",fileName)
               
    //Delete if the file already exists   
    IsExists := fileExist(filePath+fileName)   
    if IsExists {
      //删除旧-上传新       
      cmd("rm -rf "+filePath+fileName)
    }
    
   //c.SaveUploadedFile(文件,文件路径)
 if err := c.SaveUploadedFile(file, filePath+fileName); 	  
    err != nil {        
    result := &ResultProto.ResultMessage{           
    Code:    http.StatusBadRequest,            
    Message: "Failed!",       
   }        
   
c.JSON(http.StatusBadRequest, gin.H{"result": result,})       
    log.Error("Failed :\n",err)
    
 }else{
 
   c.JSON(http.StatusOK, gin.H{"result": result,})   
   
    }  
}

如果需要一次上传多个文件

//多文件一次上传 加【】,类似数组的意思
  files := form.File["upload[]"]
  for _, file := range files {
  c.SaveUploadedFile(file, filePath+fileName)
  }

猜你喜欢

转载自blog.csdn.net/jkwanga/article/details/104844970