登录
首页 >  Golang >  Go问答

Go语言中,如何设置或恢复响应正文的文件头?

来源:stackoverflow

时间:2024-02-07 22:13:01 418浏览 收藏

本篇文章向大家介绍《Go语言中,如何设置或恢复响应正文的文件头?》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我在恢复通过 GET 请求的响应发送的多个文件头以进行压缩时遇到一些问题。这里的主要问题是我想摆脱 Go 为文件设置的默认日期“1979 年 11 月 30 日”(文件压缩后),而不是那样,我希望显示当前日期。但是我不知道如何修改甚至从文件中检索标头,因为我从响应正文中接收到 io.ReadCloser 类型。

这是当前代码

archive := zip.NewWriter(w)
            attachment := "attachment; filename=someZipFile.zip")
            c.Writer.Header().Set("Content-Disposition", attachment)

            for i := 0; i < len(bodies); i++ { // bodies are response bodies, corresponding to "downloaded" files
                defer bodies[i].Close()
                fmt.Println(filenames[i])

                w, err := archive.Create("someZipFile/" + filenames[i])
                if err != nil {
                    fmt.Println("File couldn't be created")
                    return true
                }

                if _, err := io.Copy(w, bodies[i]); err != nil {
                    fmt.Println("File couldn't be written")
                    return true
                }

            }
            archive.Close()

我想澄清我能做什么,是创建新标头还是编辑现有标头,如果是前者,如何获取文件标头。在最坏的情况下,找出一个全新的解决方案。


正确答案


Create 是一个调用 CreateHeader 的辅助方法。直接调用CreateHeader指定文件元数据:

w, err := archive.CreateHeader(&zip.FileHeader{
        Name:     "someZipFile/" + filenames[i],
        Method:   zip.Deflate,
        Modified: time.Now(),
    })

更改调用以创建存档文件,如下所示。按原样使用问题中的其他代码。

以上就是《Go语言中,如何设置或恢复响应正文的文件头?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>