我想从客户端发送一个带有base64编码文件的json字符串,基本上看起来像这样:
{
"data":"aGVscA==",
"filename":"file.txt"
}
我写了这个结构:
type StoredFile struct {
Data []byte `json:"data"`
Filename string `json:"filename"`
}
然后我将json解码为struct:
decoder := json.NewDecoder(request.Body)
storedFile := StoredFile{}
err := decoder.Decode(&storedFile)
并使用gorm保存它:
db.Create(&storedFile)
我的问题是:
答案 0 :(得分:1)
是的,它会将b64字符串视为纯文本,因为无法知道它是64位基本字符串。所以再说一次,您的尺寸增加仍然会存在。
编码取决于表。如果gorm只是简单地写入一个已经存在的表中,它将使用结构中指定的编码。例如:
CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `email` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `token_user_id` varchar(255) NOT NULL, `is_admin` tinyint(4) NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY (email) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
对于此表,CHARSET
是utf8mb4
,因此它将使用UTF-8编码进行存储。
但是,如果gorm也负责创建表,我相信默认情况下它将使用utf8
作为编码,但是我似乎找不到任何源来备份它。