使用“go-ipfs-api”下载视频时出现致命错误:运行时:内存不足

我以前都是go-ipfs-api从ipfs下载大文件,web访问下载。

我收到一个致命错误:

运行时:内存不足。

我该如何修改我的代码?

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

}


绝地无双
浏览 92回答 1
1回答

繁星淼淼

您可以使用 io.Copy 代替 ReadAll,但必须自己设置内容类型:w.Header.Set("Content-Type",<the content type>)io.Copy(w,fd)return我不熟悉您正在使用的库,您可能需要在复制后调用 fd.Close() 。
打开App,查看更多内容
随时随地看视频慕课网APP