如何将Golang中的[] []字节发送到浏览器以解码为图像

时间:2015-02-25 00:18:25

标签: javascript json web go bytearray

在我的后端golang网络服务器中,我使用os.ReadDir

转换并处理了我读过的图像目录

这些图像存储为[][]byte。我希望能够通过GET请求发送这些图像,以便使用Javascript在浏览器中显示。

我无法弄清楚如何开始从Golang Web服务器发送数据的过程。我目前使用的资源是典型的net / http包和Gorilla Mux / Websockets。

这是一些示例代码,显示了我当前正在执行的get请求如何返回一些json。我怎样才能类似地发送[] []字节数组而不是渲染模板或JSON?

import (
    "html/template"
    "log"
    "net/http"
    "encoding/json"
    "github.com/gorilla/mux"
)

func ViewSample(rw http.ResponseWriter, req *http.Request) {
    type Sample struct {
        Id        int    `json:"id"`
        Name      string `json:"name"`
        User      string `json:"user
    }

    params := mux.Vars(req)
    sampleId := params["id"]

    sample := Sample{
        Id:        3,
        Name:      "test",
        User:      "testuser" 
    }

    json.NewEncoder(rw).Encode(sample)
}

1 个答案:

答案 0 :(得分:2)

如果您的图片存储在[]byte中,您可以将其直接写入http.ResponseWriter

func GetImage(w http.ResponseWriter, r *http.Request) {
    image, err := getImage() // getImage example returns ([]byte, error)
    if err != {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }

    w.Write(image)
}

无法在客户端本地理解的单个响应中发送多个图像。您可以使用的一种方法是在第一次调用时返回一个json文档,其中包含一个链接列表,用于单独获取每个图像。