gin 发送大文件

f, err := os.OpenFile(src, os.O_RDONLY, os.ModePerm)
	if err != nil {
		appG.Response_m(11111, "文件不存在", err)
		return
	}
	defer f.Close()

	buf := bufio.NewReader(f)
	type_b, _ := buf.Peek(512)

	c.Writer.Header().Set("Content-type", http.DetectContentType(type_b))//设置文件格式
	
	fileinfo, _ := f.Stat()
	//"application/octet-stream"
	c.Writer.Header().Set("Content-Length", strconv.FormatInt(fileinfo.Size(), 10))

	if ok, _ := strconv.ParseBool(show); ok { 
		c.Writer.Header().Add("Content-Disposition", "attachment; filename="+filename)//下载文件名,不设置网页直接打开PDF.jpg.png 等格式
	}

	buf_b := make([]byte, 1024*1024) //发送大小
	for {
		n, err := buf.Read(buf_b)
		if err == io.EOF || n == 0 {
			break
		}
		c.Writer.Write(buf_b[:n])
	}
	fmt.Println(filename, "结束")

  

posted @ 2020-05-20 22:03  一大二王里  阅读(475)  评论(0编辑  收藏  举报