流的形式下载 ~~~ func DownloadHandler(w http.ResponseWriter,r *http.Request,p httprouter.Params) { hash := p.ByName("filehash") if hash == "" { response.RespMsg(w,defs.ErrorBadRequest) return } meta, e := defs.GetFileMeta(hash) if e != nil { response.RespMsg(w,defs.ErrorBadRequest) return } file, e := os.Open(meta.Location) if e != nil { response.RespMsg(w,defs.ErrorBadRequest) return } defer file.Close() reader := bufio.NewReader(file) bytes := make([]byte, 1024) w.Header().Set("Content-Type","application/octet-stream") // 以流的形式下载 w.Header().Set("Content-Disposition","attachment;filename=\"" + meta.FileName + "\"") for { _, e := reader.Read(bytes) if e == io.EOF { break }else if e != nil { response.RespMsg(w,defs.ErrorBadServer) return }else{ w.Write(bytes) } } } ~~~