gin上傳文件

方式一:

func UpLoadFile( c *gin.Context)  {
   file, err := c.FormFile("filename")
   if err != nil {
      c.String(http.StatusBadRequest, fmt.Sprintf("get form err: %s", err.Error()))
      return
   }
   file.Filename = "copy_" + file.Filename
   if err := c.SaveUploadedFile(file, file.Filename); err != nil {
      c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
      return
   }
   c.String(http.StatusOK, fmt.Sprintf("File %s uploaded success", file.Filename )
}

方法二:

// 接收client上傳的文件
// 從FormFile中獲取相關的文件data!
// 而後寫入本地文件
func upload(c *gin.Context) {
    // 注意此處的文件名和client處的應該是同樣的
    file, header, err := c.Request.FormFile("uploadFile")
    filename := header.Filename
    fmt.Println(header.Filename)
    // 建立臨時接收文件
    out, err := os.Create("copy_" + filename)
    if err != nil {
        log.Fatal(err)
    }
    defer out.Close()
    // Copy數據
    _, err = io.Copy(out, file)
    if err != nil {
        log.Fatal(err)
    }
    c.String(http.StatusOK, "upload file success")
}spa

方法三:多文件上傳

func upload(c *gin.Context) {orm

        // Multipart form
        form, err := c.MultipartForm()
        if err != nil {
            c.String(http.StatusBadRequest, fmt.Sprintf("get form err: %s", err.Error()))
            return
        }
        files := form.File["files"]ip

        for _, file := range files {
            if err := c.SaveUploadedFile(file, file.Filename); err != nil {
                c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
                return
            }
        }get

        c.String(http.StatusOK, fmt.Sprintf("Uploaded successfully %d files ", len(files)))文件上傳

}io

相關文章
相關標籤/搜索