Download Files
Apart from uploading files, we also need or need a page that can download files or something on our website. The Golang library provides FileServer and ServeFile. If we want to force the file to be downloaded without having to be rendered by the browser then we can use the Content-Disposition header. More details can be seen on this page https://developer.mozilla.org/en-US/docs/Web/Headers/Content-Disposition.
How to Implement in Golang
Let’s just continue by creating a download page by creating a handler function like the one below.
func DownloadFileHandler(w http.ResponseWriter, r *http.Request) {
fileName := r.URL.Query().Get("file")
if fileName == "" {
w.WriteHeader(http.StatusBadRequest)
fmt.Fprint(w, "Bad Request")
}
w.Header().Add("Content-Disposition", "attachment;filename=\""+fileName+"\"")
http.ServeFile(w, r, "./resources/"+fileName)
}
Add the above function to the mux router in the main.go file as below.
mux.HandleFunc("/download", DownloadFileHandler)
Run it and open a browser, try accessing the page below.
http://localhost:8080/download?file=tutorial-golang.webp
Then it will immediately download the target file in the resources folder according to the file sent in the parameters.

17 How to Upload File in Golang
Hot Articles
12 Creating Static File Handler
01 Jan 2025
