下载文件时,文件名存在返回头的 Content-Disposition 中

格式 Content-Disposition: attachment;filename=044001617111_94691918.pdf

import (
	"github.com/spf13/cast"
	"io/ioutil"
	"mime"
	"net/http"
)

func GetFileByUrl(fileUrl string) ([]byte, string) {
	resp, err := http.Get(fileUrl)
	if err != nil {
		log.Error(err)
		return nil, ""
	}
	defer resp.Body.Close()
	fd, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Error(err)
		return nil, ""
	}
	if resp.StatusCode != 200 {
		log.Error(string(fd))
		return nil, ""
	}
	fileName := ""
	//获取返回头
	getDispos := resp.Header.Get("Content-Disposition")
	if getDispos != "" {
		//解析返回头
		_, params, err := mime.ParseMediaType(getDispos)
		if err == nil {
			if _, ok := params["filename"]; ok {
				fileName = cast.ToString(params["filename"])
			}
		}
	}
	return fd, fileName
}