code example from the book "Go in practice":
mr, err := r.MultipartReader() if err != nil { panic("Failed to read multipart message: ") } length := r.ContentLength for { part, err := mr.NextPart() if err == io.EOF { break } var read int64 var p float32 filename := part.FileName() dst, err := os.Create("/tmp/dstfile." + filename) if err != nil { return } for { buffer := make([]byte, 100000) cBytes, err := part.Read(buffer) if err == io.EOF { break } read = read + int64(cBytes) //fmt.Printf("read: %v \n",read ) p = float32(read) / float32(length) * 100 fmt.Printf("progress: %v \n", p) dst.Write(buffer[0:cBytes]) } } I'm trying to upload files in this way. As a result, 2 dstfile created, one of which is just a dstfile , the other dstfile.name.extension (approx. dstfile.test.txt ). I tried to load 2 types of files - .txt - which turns out to be empty, and .xls - which in general does not open.
In general, more interested in why .xls does not open.
I use windows 10, go1.8 windows / amd64
PS: there is no specific code in this book.