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.
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.