javascript - 如何将 Golang 中的 [][]byte 发送到浏览器以将其解码为图像

标签 javascript json web go bytearray

在我的后端 golang 网络服务器中,我已经转换并处理了我使用 os.ReadDir 读取的图像目录

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

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

这是一些示例代码,显示了我当前如何执行返回一些 json 的获取请求。如何类似地发送 [][]byte 数组而不是呈现模板或 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)
}

最佳答案

如果您的图像存储在 []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 文档,其中包含用于单独获取每个图像的链接列表。

关于javascript - 如何将 Golang 中的 [][]byte 发送到浏览器以将其解码为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28708919/

相关文章:

javascript - Firebase push().key 长度总是 20 个字符吗?

javascript - 如何在 Highcharts 中动态 chop 图表调整大小/重排上的 Y 轴标题

javascript - 表单验证和 Node JS - 避免厄运金字塔

javascript - JSON 对象多重过滤器

.net - 共享服务器 IIS 8.5 中的子网站

javascript - 为什么 √ 不允许作为对象名称/字符串名称/函数名称/数字名称?

javascript - 如何将 args 用作 json 字段

jquery - 多个 DIV 作为 json 字符串存入 localStorage

android - 如何访问我的 127.0.0.1 :8000 from android tablet

django - 在生产中的 Django 3 中实现自定义 404 页面的正确方法