Menyajikan data dari file
Gin menyediakan beberapa metode untuk menyajikan file ke klien. Setiap metode cocok untuk kasus penggunaan yang berbeda:
c.File(path)— Menyajikan file dari filesystem lokal. Tipe konten terdeteksi secara otomatis. Gunakan ini ketika Anda tahu path file yang tepat saat kompilasi atau sudah memvalidasinya.c.FileFromFS(path, fs)— Menyajikan file dari antarmukahttp.FileSystem. Berguna saat menyajikan file dari filesystem yang disematkan (embed.FS), backend penyimpanan kustom, atau ketika Anda ingin membatasi akses ke pohon direktori tertentu.c.FileAttachment(path, filename)— Menyajikan file sebagai unduhan dengan mengatur headerContent-Disposition: attachment. Browser akan meminta pengguna untuk menyimpan file menggunakan nama file yang Anda berikan, terlepas dari nama file asli di disk.
package main
import ( "net/http"
"github.com/gin-gonic/gin")
func main() { router := gin.Default()
// Serve a file inline (displayed in browser) router.GET("/local/file", func(c *gin.Context) { c.File("local/file.go") })
// Serve a file from an http.FileSystem var fs http.FileSystem = http.Dir("/var/www/assets") router.GET("/fs/file", func(c *gin.Context) { c.FileFromFS("fs/file.go", fs) })
// Serve a file as a downloadable attachment with a custom filename router.GET("/download", func(c *gin.Context) { c.FileAttachment("local/report-2024-q1.xlsx", "quarterly-report.xlsx") })
router.Run(":8080")}Anda dapat menguji endpoint unduhan dengan curl:
# The -v flag shows the Content-Disposition headercurl -v http://localhost:8080/download --output report.xlsx
# Serve a file inlinecurl http://localhost:8080/local/fileUntuk streaming data dari io.Reader (seperti URL remote atau konten yang dihasilkan secara dinamis), gunakan c.DataFromReader() sebagai gantinya. Lihat Menyajikan data dari reader untuk detail.