小编Ste*_*son的帖子

创建+服务(通过HTTP).ZIP文件,而无需写入磁盘?

我想要提供即时创建的.ZIP文件,而不必将其写入磁盘(I/O会降低性能)并通过HTTP将其提供给客户端.

这是我第一次尝试这个:

func ZipServe(W http.ResponseWriter, R *http.Request) {

buf := new(bytes.Buffer)
writer := zip.NewWriter(buf)

// for the sake of this demonstration, this is the data I will zip
data := ioutil.ReadFile("randomfile.jpg")

f, err := writer.Create("randomfile.jpg")
if err != nil { 
    fmt.Println(err)
}

_, err = f.Write(data)
if err != nil {
    fmt.Println(err)
}

io.Copy(W, buf)

err := writer.Close()
if err != nil {
    fmt.Println(err)
}

}
Run Code Online (Sandbox Code Playgroud)

这并不好,因为.ZIP在下载后最终会被破坏.我想这个问题与io.Copy有关; 我应该使用不同的方法吗?

zip http go

10
推荐指数
1
解决办法
2058
查看次数

标签 统计

go ×1

http ×1

zip ×1