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.

Reply via email to