首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Swift 5-如何将LONGBLOB/缓冲区转换为数据

Swift 5-如何将LONGBLOB/缓冲区转换为数据
EN

Stack Overflow用户
提问于 2021-01-24 15:34:36
回答 1查看 244关注 0票数 0

我目前正在为学校做一个项目。我使用连接到mysql数据库的Express编写了一个API。现在我正在编写iOS应用程序。我的问题是我需要保存个人资料图片。因此,我将图片的png数据保存到**LONGBLOB**到db中,并希望将图像重新创建为**UIImage**。为此,我试图将缓冲区转换为Data,因此,API将返回以这种方式创建的缓冲区:

代码语言:javascript
代码运行次数:0
运行
复制
let buffer = Buffer.from(ppData.data, 'binary').toString('base64');

在iOS方面,我尝试了:

代码语言:javascript
代码运行次数:0
运行
复制
guard let data = dict["data"] as? Data else {return nil}

其中dict["data"]是API返回的缓冲区。

但它总是进入“其他”部分。我做错什么了

编辑:

正如评论中所说的,我解码了Base64编码的字符串。现在数据被解码了,但是从它创建一个UIImage失败了,没有任何细节。我试过的是:

代码语言:javascript
代码运行次数:0
运行
复制
let image = UIImage(from: base64DecodedData)

例如:

代码语言:javascript
代码运行次数:0
运行
复制
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
}

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-02-01 00:49:14

错误不是在快速代码部分,而是在我的API和数据库结构中。在阅读了一些MySQL和Node.js文档之后,我从LONGBLOB (完全超大型)切换到了MEDIUMTEXT

此外,在API中,我试图从二进制数据创建缓冲区,而不是从base64字符串编码的数据中创建缓冲区,因此我删除了这一行:

代码语言:javascript
代码运行次数:0
运行
复制
let buffer = Buffer.from(ppData.data, 'binary').toString('base64');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65872489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档