File tunggal
Gunakan c.FormFile untuk menerima satu file yang diunggah dari permintaan multipart/form-data, kemudian c.SaveUploadedFile untuk menyimpannya ke disk.
Anda dapat mengontrol memori maksimum yang digunakan selama parsing multipart dengan mengatur router.MaxMultipartMemory (bawaannya 32 MiB). File yang lebih besar dari batas ini disimpan di file sementara pada disk alih-alih di memori.
package main
import ( "fmt" "log" "net/http" "path/filepath"
"github.com/gin-gonic/gin")
func main() { router := gin.Default() // Menurunkan batas memori untuk form multipart (bawaannya 32 MiB) router.MaxMultipartMemory = 8 << 20 // 8 MiB
router.POST("/upload", func(c *gin.Context) { // file tunggal file, err := c.FormFile("file") if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } log.Println(file.Filename)
// Simpan file ke tujuan tertentu. dst := filepath.Join("./files/", filepath.Base(file.Filename)) c.SaveUploadedFile(file, dst)
c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename)) })
router.Run(":8080")}Uji coba
curl -X POST http://localhost:8080/upload \ -F "file=@/path/to/your/file.zip" \ -H "Content-Type: multipart/form-data"# Output: 'file.zip' uploaded!