Selain upload file, kadang kita ingin membuat halaman website yang digunakan untuk download sesuatu, sebenarnya digolang sudah di sediakan menggunakan FileServer & ServeFile
. Dan jika kita ingin memaksa file di download (tanpa dirender oleh browser, kita bisa menggunakan header Content-Disposition
).
Contohnya, buat file baru dengan nama download_file_test.go
dan masukkan baris kode berikut
package belajar_golang_web
import (
"fmt"
"net/http"
"testing"
)
func DownloadFile(writer http.ResponseWriter, request *http.Request) {
file := request.URL.Query().Get("file")
if file == "" {
writer.WriteHeader(http.StatusBadRequest)
fmt.Fprint(writer, "Bad Request")
return
}
writer.Header().Add("Content-Disposition", "attachment; filename=\""+file+"\"")
http.ServeFile(writer, request, "./resources/"+file)
}
func TestDownloadFile(t *testing.T) {
server := http.Server{
Addr: "localhost:8080",
Handler: http.HandlerFunc(DownloadFile),
}
err := server.ListenAndServe()
if err != nil {
panic(err)
}
}

Penutup
Pada artikel kali ini kita telah belajar tentang download file pada golang web. Dan pada artikel selanjutnya saya akan membahas middleware pada golang web.