golang - golang 파일 다운로드 예제... Force download file example
이 름 : 바다아이
|
조회수 : 9622
짧은 주소 : https://www.bada-ie.com/su/?411591780315
// 아래는 파일을 읽어서 뿌리는 방식....
// 다른 방법으로는 url 로 불러서 뿌리는 방식도 있습니다. url 로 불러 뿌리는 게 좀 더 많이 사용될 겁니다.
package main
import (
"bytes""fmt""io/ioutil""net/http""strconv""time"
)
// change to your target filename// that you want to force download to your visitor browservar file = "img.pdf"funcHome(w http.ResponseWriter, r *http.Request) {
// We will force download after 2 seconds. If you want to increase the delay// simply change 2 to whatever number you wanted.
html := "<html><meta http-equiv='refresh' content='2; url=http://localhost:8080/download' />"
html = html + "Downloading file now. If the download does not happen automagically. Please "
html = html + "<a href=" + file + ">click here</a></html>"
w.Write([]byte(html))
}
funcForceDownload(w http.ResponseWriter, r *http.Request) {
downloadBytes, err := ioutil.ReadFile(file)
if err != nil {
fmt.Println(err)
}
// set the default MIME type to send
mime := http.DetectContentType(downloadBytes)
fileSize := len(string(downloadBytes))
// Generate the server headers
w.Header().Set("Content-Type", mime)
w.Header().Set("Content-Disposition", "attachment; filename="+file+"")
w.Header().Set("Expires", "0")
w.Header().Set("Content-Transfer-Encoding", "binary")
w.Header().Set("Content-Length", strconv.Itoa(fileSize))
w.Header().Set("Content-Control", "private, no-transform, no-store, must-revalidate")
//b := bytes.NewBuffer(downloadBytes)//if _, err := b.WriteTo(w); err != nil {// fmt.Fprintf(w, "%s", err)// }// force it down the client's.....
http.ServeContent(w, r, file, time.Now(), bytes.NewReader(downloadBytes))
}
funcmain() {
http.HandleFunc("/", Home)
http.HandleFunc("/download", ForceDownload)
// SECURITY : Only expose the file permitted for download.
http.Handle("/"+file, http.FileServer(http.Dir("./")))
http.ListenAndServe(":8080", nil)
}
출처 : https://www.socketloop.com/tutorials/golang-force-download-file-example
|
|
번 호
카테고리
제 목
이름
조회수
Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ Ubuntu + GoLang + PostgreSQL + Mariadb ]
서버위치 : 오라클 클라우드 춘천 실행시간 : 0.08125 초 to webmaster... gogo sea. gogo sea.