Works perfectly. cheers package main
import ( "fmt" "io" "log" "net/http" "os" ) func main() { http.HandleFunc("/", serverFile) if err := http.ListenAndServe(":8085", nil); err != nil { log.Fatal(err) } } func serverFile(w http.ResponseWriter, r *http.Request) { streamPDFbytes, err := os.Open("./large.txt") if err != nil { fmt.Println(err) return } w.Header().Set("Content-Disposition", "attachment;filename=large.txt") io.Copy(w, streamPDFbytes) } On Tuesday, February 28, 2017 at 11:34:04 AM UTC, Jordan Krage wrote: > > Try using os.Open to get a *File (which implements io.Reader), and then > io.Copy to the response from the file. > > On Tuesday, February 28, 2017 at 5:13:20 AM UTC-6, Jeffrey Smith wrote: >> >> I'm trying to server up a file that can be very large so would like to >> try and stream the content back. >> >> package main >> >> import ( >> "bytes" >> "fmt" >> //"io" >> "io/ioutil" >> "log" >> "net/http" >> ) >> >> func main() { >> >> http.HandleFunc("/", serverFile) >> if err := http.ListenAndServe(":8085", nil); err != nil { >> log.Fatal(err) >> } >> >> } >> >> func serverFile(w http.ResponseWriter, r *http.Request) { >> >> streamPDFbytes, err := ioutil.ReadFile("./large.txt") >> if err != nil { >> fmt.Println(err) >> return >> } >> >> b := bytes.NewBuffer(streamPDFbytes) >> >> w.Header().Set("Content-Disposition", >> "attachment;filename=large.txt") >> //io.Copy(w, b) >> if _, err := b.WriteTo(w); err != nil { >> fmt.Fprintf(w, "%s", err) >> } >> } >> >> I tried using this but I believe ioutil.readFile actually calls >> ioutil.readAll so sticks the whole content of the file into a byte array. >> What am i doing wrong? >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.