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)
}
}
这一直困扰着我,希望有人能提供帮助。如果这是一个愚蠢的问题,请原谅我,因为我是 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)
}
}