let buffer = Buffer.from(ppData.data, 'binary').toString('base64');
在 iOS 方面我尝试过:
guard let data = dict["data"] as? Data else {return nil}
其中 dict["data"]
是 API 返回的缓冲区。
但它总是进入“其他”部分。
我做错了什么
编辑:
正如评论中所说,我解码了 Base64 编码的字符串。现在数据被解码,但从中创建 UIImage 失败,没有任何细节。我试过的是:
let image = UIImage(from: base64DecodedData)
例如:
guard let strData = dict["data"] as? String else {
return nil
}
guard let data = Data(base64Encoded: strData, options: .ignoreUnknownCharacters) else {
return nil
}
guard let picture = UIImage(data: data) else {
return nil
}
编辑解决:
所以错误不是在 swift 代码部分,而是在我的 API 和数据库结构中。在阅读了一些 mysql 和 node js 文档之后。我从 LONGBLOB(顺便说一句,这是完全超大的)切换到 MEDIUMTEXT。在 API 中,我试图从二进制数据而不是从 base64 字符串编码数据创建缓冲区,所以我删除了:
let buffer = Buffer.from(ppData.data, 'binary').toString('base64');
谢谢。
答案 0 :(得分:0)
解决了!
所以错误不在于 swift 代码部分,而在于我的 API 和数据库结构。在阅读了一些 mysql 和 node js 文档之后。我从LONGBLOB
(顺便说一句,完全超大)切换到MEDIUMTEXT
。在 API 中,我试图从二进制数据而不是从 base64 字符串编码数据创建缓冲区,所以我删除了:
let buffer = Buffer.from(ppData.data, 'binary').toString('base64');