首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将http响应流式传输到http ResponseWriter

将http响应流式传输到http ResponseWriter
EN

Stack Overflow用户
提问于 2021-05-21 14:51:10
回答 1查看 488关注 0票数 0

我想将HTTP GET响应流式传输到HTTP响应编写器。我在网上搜索了解决方案,最后用io.Copy解决了这个问题。但它不是流,而是下载整个get响应,然后传递给HTTP响应编写器。我被这个问题困扰了两天。如果你知道的话帮帮我。以下是示例代码

代码语言:javascript
运行
复制
package main

import (
    "fmt"
    "io"
    "net/http"
    "time"

    "github.com/gorilla/mux"
)

func main() {
    router := mux.NewRouter()
    router.Path("/test").HandlerFunc(Stream).Methods("GET")

    srv := &http.Server{
        Addr:         ":4000",
        Handler:      router,
        ReadTimeout:  30 * time.Minute,
        WriteTimeout: 30 * time.Minute,
        IdleTimeout:  60 * time.Minute,
    }

    srv.SetKeepAlivesEnabled(true)

    fmt.Println(srv.ListenAndServe())
}

// Stream .
func Stream(w http.ResponseWriter, r *http.Request) {
    req, err := http.NewRequest("GET", "https://lh3.googleusercontent.com/k3ysodYwXwhm7ThrM_-zbqhETk8CUfMd5vuG9RbjBKrKAKQaUfZpiRRDg8ZEaT-WfsDkRfS_cheTM4JvT3TEoNEPF4gzofkq0Y6ykGVT_WhG4hXG-nAdkpeyeY1kMysqBWdS5YDGIPY=d", nil)
    if err != nil {
        return
    }

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        return
    }
    defer resp.Body.Close()

    w.Header().Set("content-type", "video/mp4")
    w.WriteHeader(206)
    w.Header().Set("Status", "206")

    i, err := io.Copy(w, resp.Body)
    fmt.Println(i, err)
}
EN

回答 1

Stack Overflow用户

发布于 2021-05-21 14:54:26

使用io.Copy 是将http请求正文的内容流式传输到响应正文。我不知道你为什么不这么想。

另外,请直接在问题中发布您的代码,而不是在外部链接中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67632065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档