Base64 字符串解码并保存为文件

Base64 string decode and save as file

这一直困扰着我,希望有人能提供帮助。如果这是一个愚蠢的问题,请原谅我,因为我是 Go 的新手。

我有一个包含 base64 的结构。该结构如下所示:

 type UploadedFile struct {
    PartnerId string
    FileName string
    UploadDateTime string
    FileChecksum string
    FileBase64 string
 }

我想获取那个 base64 字符串,对其进行解码然后保存,听起来很简单,可能确实如此,但我很震惊。

代码如下所示:

decoder := json.NewDecoder(r.Body)
uploadedFile := models.UploadedFile{}
err := decoder.Decode(&uploadedFile)
dec, _ := base64.StdEncoding.DecodeString(uploadedFile.FileBase64)

我从这里去哪里?我已经尝试了很多东西,但我一直在整个文件中遇到错误。

我试过改编人们用于图像的代码,但我总是崩溃和刻录,因为文件不是图像,它可以是任何东西

提前致谢。

Update: 忘了说了,写完之后如果用f.Write make sure to also call f.Sync保证你写的所有内容都真实存在.该示例显示更新后的代码。

不确定您的代码示例是否不完整,因此此答案可能无关紧要,但要将解码后的字符串字节保存到文件中,您首先需要打开或创建一个文件,然后将字节写入其中。像这样:

package main

import (
    "encoding/base64"
    "io"
    "os"
)

var b64 = `TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=`

func main() {
    dec, err := base64.StdEncoding.DecodeString(b64)
    if err != nil {
        panic(err)
    }

    f, err := os.Create("myfilename")
    if err != nil {
        panic(err)
    }
    defer f.Close()

    if _, err := f.Write(dec); err != nil {
        panic(err)
    }
    if err := f.Sync(); err != nil {
        panic(err)
    }
}

运行 在这里:https://play.golang.org/p/SZVquhZdXC