直接上代码
package main import ( "fmt" "io/ioutil" "net/http" ) //获取C的图片数据 func ReadImgData(url string) []byte { resp, err := http.Get(url) if err != nil { panic(err) } defer resp.Body.Close() pix, err := ioutil.ReadAll(resp.Body) if err != nil { panic(err) } return pix } func myWeb(w http.ResponseWriter, r *http.Request) { w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域 w.Header().Add("Access-Control-Allow-Headers", "Content-Type") //header的类型 //w.Header().Set("content-type", "application/json") //返回数据格式是json query := r.URL.Query(); var url string; var name string; if len(query["url"]) > 0{ url = query["url"][0] }else { fmt.Fprintf(w, ""); return ; } if len(query["name"]) > 0{ name = query["name"][0]; w.Header().Set("content-type", "application/octet-stream") w.Header().Set("Content-Disposition", "attachment; filename=" + name) } fmt.Println(url,name); pix := ReadImgData(url); w.Write(pix ) //fmt.Fprintf(w, "这是一个开始"); } func main() { http.HandleFunc("/", myWeb) fmt.Println("服务器即将开启,访问地址 http://localhost:3000") err := http.ListenAndServe(":3000", nil) if err != nil { fmt.Println("服务器开启错误: ", err) } }
调用方式:
<img src="http://localhost:3000?url=http%3A%2F%2Fhbimg.b0.upaiyun.com%2F32f065b3afb3fb36b75a5cbc90051b1050e1e6b6e199-Ml6q9F_fw320&name=test.jpg" >