// @router /other/download-video [*] func (this *OtherController) DownLoadVideo() { link := this.GetString("link", "") if link == "" { this.toJson(-403, "args err", map[string]string{}) } split := strings.Split(link, "/") sname := split[len(split)-1:][0] //this.Ctx.Output.Header("Content-type", "application/octet-stream") this.Ctx.Output.Header("Content-type", "application/force-download") this.Ctx.Output.Header("Content-Disposition", "attachment;filename="+sname) this.Ctx.Output.Header("Pragma", "No-cache") this.Ctx.Output.Header("Cache-Control", "No-cache") this.Ctx.Output.Header("Expires", "0") tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } client := &http.Client{Transport: tr} resp, err := client.Get(link) fmt.Println("download-video ==> [xxx] resp ", resp) fmt.Println("download-video ==> [xxx] err err ", err) if resp != nil { defer func() { resp.Body.Close() }() } //body, err := ioutil.ReadAll(resp.Body) _, err = io.Copy(this.Ctx.ResponseWriter, resp.Body) //fmt.Println(written) fmt.Println("download... ", err) //this.Ctx.WriteString(string(body)) }