go語言獲取網絡圖片后返回給前端展示


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" >

  

 

可以解決跨域的問題,下載圖片


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM