Study
Gin

File Upload

Penjelasan

c.FormFile("nama_field") mengambil file yang diupload lewat form multipart/form-data. Gin punya method praktis c.SaveUploadedFile(file, path) yang LANGSUNG menyimpan file itu ke disk — mirip c.SaveFile() Fiber, cuma beda nama method.

Contoh Konsep

r.POST("/produk/upload", func(c *gin.Context) {
	file, err := c.FormFile("gambar")
	if err != nil {
		c.JSON(400, gin.H{"error": err.Error()})
		return
	}

	if err := c.SaveUploadedFile(file, "./uploads/"+file.Filename); err != nil {
		c.JSON(500, gin.H{"error": err.Error()})
		return
	}

	c.JSON(200, gin.H{"namaFile": file.Filename})
})

Praktikum

Buat route POST /artikel/upload yang menerima satu file dengan field name "foto" lewat c.FormFile(), simpan ke folder "uploads/artikel/" lewat c.SaveUploadedFile(), merespons JSON berisi nama file yang tersimpan.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Penamaan c.SaveUploadedFile() (Gin) vs c.SaveFile() (Fiber) untuk fungsi yang KONSEPNYA identik adalah contoh lagi kenapa dokumentasi resmi tiap framework tetap perlu dicek — walau ketiga framework Go ini (Gin/Echo/Fiber) mirip konsep, penamaan method detailnya tidak selalu sama persis.