我以前都是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}
1 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
您可以使用 io.Copy 代替 ReadAll,但必须自己设置内容类型:
w.Header.Set("Content-Type",<the content type>)
io.Copy(w,fd)
return
我不熟悉您正在使用的库,您可能需要在复制后调用 fd.Close() 。
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消