如何使用 Alamofire 将用户配置文件图像保存到 MYSQL 数据库,然后在以下屏幕上检索

Posted

技术标签:

【中文标题】如何使用 Alamofire 将用户配置文件图像保存到 MYSQL 数据库,然后在以下屏幕上检索【英文标题】:How to save user profile image using Alamofire to MYSQL database then retrieve on the following screen 【发布时间】:2017-02-24 01:40:03 【问题描述】:

我正在创建一个用户配置文件,我想将用户的图像保存到我的 mysql 数据库中。最初,我将用户的性别、生日和关系状态保存到 User 类,但是我决定添加用户个人资料图像。该附加代码如下:

  func updateUser(UserGender: String, UserBirthday: Date, UserStats: String, UserImage: UIImage, completion: @escaping (String?, String?) -> Void) 
    let dicParams = [
        "user_gender"   : UserGender,
        "user_birthday" : UserBirthday,
        "user_stats"    : UserStats,
        "user_image"    : UserImage
        ] as [String : Any]

    Alamofire.request("\(Constants.Server.URL)/users",
        method: .put,
        parameters: dicParams,
        headers: header)
        .validate()
        .responseJSON  (response) in
            switch response.result 
            case .success(let value as [String: String]):
                completion(value[Constants.Server.RESPONSE_MESSAGE], nil)
            case .failure(_):
                completion(nil, self.getErrorString(ErrorData: response.data!))
            default:
                completion(nil, "Unkown Error")
            
    

我很好奇,因为如果我需要使用 UIImageJPEGRepresentation 或在请求中包含任何其他信息,或者当我在以下屏幕上调用它以填充 UIImageView 以将其包装为 UIImage 对象时,它是一个图像。任何帮助将不胜感激。

【问题讨论】:

如果我错了,请纠正我,但参数会出现在 PUT 请求的 URL 中,所以我不确定指定日期或图像实际上会做什么。 Alamofire 可能足够聪明,可以将日期转换为合适的字符串,但是图像呢?您可能希望将二进制数据放入请求的正文中。而且我对从 SQL 数据库存储和检索二进制数据的最佳实践一无所知。 【参考方案1】:

您不需要直接保存在数据库中。下载图像时,将其保存到应用程序的文档目录中,并将其路径保存到数据库中。无论您需要在哪里显示,只需从文档目录中读取图像,因为您的数据库中有它的路径并将其设置为 imageView。

【讨论】:

以上是关于如何使用 Alamofire 将用户配置文件图像保存到 MYSQL 数据库,然后在以下屏幕上检索的主要内容,如果未能解决你的问题,请参考以下文章

如何使用操作查询发出多个 Alamofire 请求

matlab中如何保将显示出来的图像保存

如何使用 alamofire 上传多个文件并显示进度?

如何使用 Alamofire Swift 4 将图像填充到 UICollectionView

如何将接受的图像 MIME 类型添加到 Alamofire 5.2

如何在 Swift 中使用 Alamofire 上传带有 JSON 参数的图像?