douliao1911 2016-01-18 12:56
浏览 840


I have a client which makes a request to download a file, the web server forwards this request on to the resource server that actually holds the file. The *http.Response back from the resource server has the Body io.ReaderCloser streaming the file contents from the resource server. But I'm then at the point where I want to start writing that into the original http.ResponseWriter that came from the client. Looking at the http.ResponseWriter interface it only contains a Write method which takes a slice of bytes, which makes me think that the only way to get the file contents back to the client is to read the Body io.ReaderCloser into a buffer and then put that into the http.ResponseWriter's Write method. which I dont want to do since that is hugely inefficient and it would be much better to stream it through my web server. Is this possible?

here is some code to illustrate:

getFile() *http.Response {
    //make a request to resource server and return the response object

// handle request from client
http.HandleFunc("/getFile", func(w http.ResponseWriter, r *http.Request){
    res := getFile()
    //how can I stream res.Body into w without buffering ?
  • 写回答



      相关推荐 更多相似问题


      • ¥15 opencv c++虚拟画家
      • ¥20 python 生成exe报错问题
      • ¥15 基于香农-费诺-埃利斯编码实现对英文文本的压缩和解压缩
      • ¥15 react native ios端amap问题
      • ¥15 fortran95中5个学生分不同学号求数学语文英语计算机四门课程的每名学生的平均分以及名次以及单科成绩的平均分
      • ¥30 excel vba 执行从 1 到 100 的乘法。执行结果保存成二维数组
      • ¥15 数字电子技术基础设计实验
      • ¥15 ue5运行非常卡顿,是电脑配置原因吗
      • ¥50 有没有大佬看一下关于思科的这道题怎么做
      • ¥30 求十字路口交通灯S7-200plc,今天早上八点前。