【发布时间】:2021-04-28 12:48:22
【问题描述】:
我目前正在为学校做一个项目。 我使用 Express 编写了一个连接到 mysql 数据库的 API。现在我正在编写 iOS 应用程序。 我的问题是我需要保存个人资料图片。所以我将图片的 png 数据保存到 **LONGBLOB** 到 db 中,我想将图像重新创建为 **UIImage**。 为此,我试图将缓冲区转换为 ```Data``` 因此,API 正在返回以这种方式创建的缓冲区:
let buffer = Buffer.from(ppData.data, 'binary').toString('base64');
在 iOS 端我尝试了:
guard let data = dict["data"] as? Data else {return nil}
dict["data"] 是 API 返回的缓冲区。
但它总是进入“其他”部分。
我做错了什么
编辑:
正如在 cmets 中所说,我解码了 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
}
谢谢。
【问题讨论】:
-
那么
dict["data"]包含什么?可能是需要首先解码的 Base64 编码 string 吗?看看stackoverflow.com/q/19088231/1187415。 -
dict["data"]正如您所猜测的,它包含 Base64 编码的字符串。我看了你寄来的东西。现在我有了解码数据,但UIImage(data: data)也返回 nil,我不知道如何进一步了解失败的更多细节。 -
guard let base64String = dict["data"] as? String else {return nil}; guard let data = Data(base64Encoded: base64String); let image = UIImage(from: data)? -
我也试过这样...
-
然后呢?怎么了?是否有任何“返回”被调用?哪一个?使用这样的选项怎么样:stackoverflow.com/questions/65887113/…
标签: javascript ios mysql swift nsdata