func createPost(username: String, user_id: String, description: String, image: UIImage, completion: @escaping (Bool) -> ()) {
var request = URLRequest(url: URL(string: Globals.root+"/amazing/image/post/here")!)
request.httpMethod = "POST"
//request.httpBody = .data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(String(describing: response))")
}
if let data = data {
do {
let aaData = try JSONSerialization.jsonObject(with: data, options: [])
if let ppData = aaData as? [String:Any] {
let u = ppData["username"] as! Bool
if u == true {
completion(true)
}
}
} catch let error as NSError {
print(error.localizedDescription)
completion(false)
}
}
}
task.resume()
}
我一直在搜索和搜索有效的答案,但我没有发现任何与Swift 4相关的内容。我希望能够将图像发送到我的RESTful API而无需对其进行编码。怎么能这样做?提前致谢。 :)
答案 0 :(得分:1)
首先,鉴于您要发送用户名,以及图片的内容,它必须是多部分表单(或一些丑陋的BASE64编码的JSON属性)。
通常来说,干净的方法是首先通过二元体帖上传图片(因为图像是转移中唯一的东西,也是更快),获取Id并将其作为字段引用。
如果做不到这一点,那么使用Moya + AlamoFire会怎么样?
https://github.com/Moya/Moya/issues/598
图像是二进制对象,这是无效的HTTP,除非您通过多部分表单对其进行编码或将其包装为JSON安全Base-64(假设您使用的是JSON)