Skip to content
Santekno.com | Level Up Your Engineering Skills
ID
📖 0%
10 Sep 2023 · 1 mnt baca ·Artikel 48 / 119
Go

18 Download File

IH
Ihsan Arif
Penulis di Santekno · Backend Engineer

Download File

Selain upload file, kita juga perlu atau membutuhkan halaman yang bisa melakukan download file atau sesuatu yang ada pada website kita. Pada library Golang sudah disediakan yaitu FileServer dan ServeFile. Jika kita ingin memaksa file di download tanpa harus di render oleh browser maka kita bisa menggunakan header Content-Disposition. Lebih lengkapnya bisa dilihat di halaman ini https://developer.mozilla.org/en-US/docs/Web/Headers/Content-Disposition .

Cara Implementasi pada Golang

Langsung saja kita lanjutkan dengan cara membuat halaman download dengan membuat fungsi handler seperti dibawah ini.

go
 1func DownloadFileHandler(w http.ResponseWriter, r *http.Request) {
 2	fileName := r.URL.Query().Get("file")
 3	if fileName == "" {
 4		w.WriteHeader(http.StatusBadRequest)
 5		fmt.Fprint(w, "Bad Request")
 6	}
 7
 8	w.Header().Add("Content-Disposition", "attachment;filename=\""+fileName+"\"")
 9	http.ServeFile(w, r, "./resources/"+fileName)
10}
Tambahkan fungsi diatas pada router mux pada file main.go seperti dibawah ini.
go
1mux.HandleFunc("/download", DownloadFileHandler)

Jalankan dan buka browser coba akses halaman dibawah ini.

bash
1http://localhost:8080/download?file=tutorial-golang.webp

Maka akan langsung download file yang dituju pada folder resources sesuai dengan file yang dikirim pada parameter.

tutorial golang web download file

Artikel Terkait

💬 Komentar