douyaju4259 2019-08-23 01:54
浏览 159
已采纳

我收到一个致命错误:运行时:使用'go-ipfs-api'下载视频时内存不足

I used go-ipfs-api to download a large file from ipfs, web access download.

I get an error fatal error:

runtime: out of memory.

How can I modify my code?

func main()  {
    http.HandleFunc("/", download)

    http.ListenAndServe(":8080", nil)

}

func download(w http.ResponseWriter, r *http.Request) {
    client := shell.NewShell("http://127.0.0.1:5001")

    fd, err := client.Cat("QmTcj7SfRf4vnLnCqnxMT7kutrzFyevjBeT5RCiN9xGAL4")
    if err != nil{
        fmt.Println(err.Error())
        w.WriteHeader(http.StatusInternalServerError)
        return
    }
    defer fd.Close()

    fileName := "demo.mp4"
    // As per RFC6266 section 4.3
    w.Header().Set("Content-Disposition", "attachment; filename*=utf-8''"+ fileName)

    data, _ := ioutil.ReadAll(fd)

    http.ServeContent(w, r, fileName, time.Now().Local(), bytes.NewReader(data))

    w.WriteHeader(http.StatusOK)
    return
}
  • 写回答

1条回答 默认 最新

  • dry69034 2019-08-23 02:11
    关注

    Instead of ReadAll, you can use io.Copy, but you have to set the content type yourself:

    w.Header.Set("Content-Type",<the content type>)
    io.Copy(w,fd)
    return
    

    I'm not familiar with the library you're using, you may need to call fd.Close() after copy.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊