Study
Echo

File Upload

Penjelasan

c.FormFile("nama_field") mengambil file yang diupload lewat form multipart/form-data — mengembalikan *multipart.FileHeader, dibuka lewat Open(), lalu disalin ke file tujuan di disk lewat io.Copy().

Contoh Konsep

e.POST("/produk/upload", func(c echo.Context) error {
	file, err := c.FormFile("gambar")
	if err != nil {
		return err
	}

	src, err := file.Open()
	if err != nil {
		return err
	}
	defer src.Close()

	dst, err := os.Create("uploads/" + file.Filename)
	if err != nil {
		return err
	}
	defer dst.Close()

	io.Copy(dst, src)

	return c.JSON(http.StatusOK, map[string]string{"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/", merespons JSON berisi nama file yang tersimpan.

Editor Latihan

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

Tips

SELALU tutup file handle lewat defer src.Close() dan defer dst.Close() segera setelah berhasil dibuka — lupa menutup file handle bisa menyebabkan resource leak, khususnya berbahaya di server yang menangani banyak upload sekaligus.