无法成功编码 UIImage 并存储在数据库中

Posted

技术标签:

【中文标题】无法成功编码 UIImage 并存储在数据库中【英文标题】:Unable to successfully Encode UIImage and store in Database 【发布时间】:2016-01-01 01:00:03 【问题描述】:

我希望将 UIImage 转换为 NSData(这部分有效),然后将该 NSData 编码为字符串,以便我可以通过 Alamofire POST 请求将其存储到我的数据库中。 这是我到目前为止的代码以及我在 Swift 2 中尝试过的不同编码方法:

let a = spaceImage.image
let imageData = UIImagePNGRepresentation(a!)

//First method
let base64String = imageData!.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)

//Second method
let base64String2 = imageData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))

//Third method
let base64String3 = String(data: imageData!, encoding: NSUTF8StringEncoding)

因此,每种方法都有一个特定的问题。

第一种方法,我得到这个错误:

失败:错误域=NSCocoaErrorDomain 代码=3840“字符 0 周围的值无效。” UserInfo=NSDebugDescription=字符 0 周围的值无效。

第二种方法,我得到与第一种方法相同的错误:

失败:错误域=NSCocoaErrorDomain 代码=3840“字符 0 周围的值无效。” UserInfo=NSDebugDescription=字符 0 周围的值无效。

第三种方法,当我打印这个字符串时,它是 nil,所以这显然也不起作用。

请记住,我使用 Swift 2 和 Alamofire 来发出 POST 请求(以 JSON 编码)。实现我想要做的事情的正确方法是什么?

【问题讨论】:

【参考方案1】:

我猜这是 alamorefire 错误。如果你打电话,在你的邮政编码中

Alamorefire.request().responseJSON() 

试试这个。

Alamorefire.request().responseString() 

【讨论】:

当我做响应字符串时,我收到以下错误,即使请求有效:<body><h1>request entity too large</h1><h2>413</h2><pre>Error: request entity too large 当我查看数据库时,我试图发布的项目显然不存在。还有其他帮助吗? 似乎这是服务器问题...您可以发送小字符并检查。可能是 let base64String3 = "hello world" 。试试这个 。在您的要求中?

以上是关于无法成功编码 UIImage 并存储在数据库中的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用案例类在 DataFrame 上映射失败并显示“无法找到存储在数据集中的类型的编码器”?

Swift 4 Alamofire 和编码 UIImage 的问题

将UIImage转换为数据URI

NSData/UIImage 到字符串

将UIImage转换为NSData并返回UIImage

无法在 UIImageView 中显示 UIImage