登录
首页 >  Golang >  Go问答

Gzip writer 未将 gzip 数据写入 Golang 中的 S3

来源:stackoverflow

时间:2024-04-17 15:51:24 500浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《Gzip writer 未将 gzip 数据写入 Golang 中的 S3》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我有一个(希望)简单的问题。我正在尝试将 http 请求的结果写入 s3 中的 gzip 文件。然而,当从 s3 下载结果文件时,它只是纯文本格式,未压缩。下面是代码片段(无引导)。代码构建、lints 和运行没有错误,所以我不确定我哪里出错了......任何指针将不胜感激!

r, w := io.Pipe()
gw := gzip.NewWriter(w)
go func() {
    defer w.Close()
    defer gw.Close()
    _, err := gw.Write(httpResponse)
    if err != nil {
        fmt.Println(“error”)
    }
}()
cfg, _ := config.LoadDefaultConfig(context.TODO())
s3Client := s3.NewFromConfig(cfg)
ul := manager.NewUploader(s3Client)
_, err := ul.Upload(context.TODO(), &s3.PutObjectInput{
    Bucket:          aws.String(bucket),
    ContentEncoding: aws.String("gzip"),
    Key:             aws.String(fileName),
    Body:            r,
})
if err != nil {
    fmt.Println(“error”)
}

正确答案


这是通过浏览器下载的副作用,它会解码 gzip 但保留 .gz 扩展名(坦率地说,这很令人困惑)。如果您使用 AWS cli 或 API 下载文件,它将保留为 GZIP。

参见:https://superuser.com/questions/940605/chromium-prevent-unpacking-tar-gz?noredirect=1&lq=1

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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