gpt4 book ai didi

go - 编辑内存中的zip文件

转载 作者:行者123 更新时间:2023-12-01 22:08:08 25 4
gpt4 key购买 nike

我正在尝试在Go中的内存中编辑一个zip文件,并通过HTTP响应返回压缩后的文件

目标是在zip文件示例中的路径中添加一些文件

我在压缩文件夹的log.txt路由中添加了一个path/to/file文件

所有这些都应在不保存文件或编辑原始文件的情况下完成。

最佳答案

我已经实现了实时流压缩的简单版本,它可以正确压缩单个文件。如果要使其高效运行,则需要进行大量优化。

仅供引用。如果需要更多信息,则应在压缩之前设置更多有用的HTTP header 信息,以便客户端可以正确处理响应数据。

package main

import (
"archive/zip"
"io"
"net/http"
"os"

"github.com/gin-gonic/gin"
)

func main() {
engine := gin.Default()
engine.GET("/log.zip", func(c *gin.Context) {
f, err := os.Open("./log.txt")
if err != nil {
c.String(http.StatusInternalServerError, err.Error())
return
}

defer f.Close()
info, err := f.Stat()
if err != nil {
c.String(http.StatusInternalServerError, err.Error())
return
}

z := zip.NewWriter(c.Writer)
head, err := zip.FileInfoHeader(info)
if err != nil {
c.String(http.StatusInternalServerError, err.Error())
return
}

defer z.Close()

w, err := z.CreateHeader(head)
if err != nil {
c.String(http.StatusInternalServerError, err.Error())
return
}

_, err = io.Copy(w, f)
if err != nil {
c.String(http.StatusInternalServerError, err.Error())
return
}
})

engine.Run("127.0.0.1:8080")
}

关于go - 编辑内存中的zip文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59726608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com