怎么用Alamofire上传图片(帖子)?

原学程将引见若何用Alamofire上传图片(帖子)?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

怎么用Alamofire上传图片(帖子)? 教程 第1张

成绩描写

我必需收回API要求能力上传1张图片,该图片是相机拍摄的照样从图库中拾与的。树立交心中树立的办法,Body/参数中只要

key:file
value: // 

个中,值是图片自己。(在邮递员中,我只需从我的文件中上传1张图片,它便不妨任务),它会前往1个URL,个中包括1些其余信息。
成绩是我没法取得胜利呼应的要求,而且我没有晓得怎样将UIImage传播给Alamofire。
这便是我所做的

Alamofire.request(baseUrl,
 method: .post,
 parameters: ["file" : expenseImage])
.responseJSON(completionHandler: { response in
 guard response.result.error == nil else {
  print("Error subiendo la imagen 
(response.result.error!)")
  return
 }

 guard let json = response.result.value as? [String: Any] else {
  if let error = response.result.error {
print("Error: (error.localizedDescription)")
  }
  return
 }
 do {
  let decoder = JSONDecoder()
  let rawData = try JSONSerialization.data(withJSONObject: json, options: [])
  let dataObject = try decoder.decode(PutObjectFile.self, from: rawData)
  finished(dataObject)
  print(dataObject)

  print(dataObject.msg.file_info.url)
 } catch let error {
  print("Error decoding:
(error)")
 }
  })

我在掌握台中支到的毛病以下:

responseSerializationFailed(reason: Alamofire.AFError
.ResponseSerializationFailureReason.inputDataNilOrZeroLength)

我测验考试应用随机图片URL,但是也没有起感化

推举谜底

您不妨应用分块数据上传图象,应用以下代码:

let manager = Alamofire.SessionManager.default
 do{
  manager.upload(multipartFormData: { (formData) in
if let fileData = fileData { // File data
 formData.append(fileData, withName: "FILE_NAME", fileName: "simple.jpeg", mimeType: "image/jpeg")
}
  }, to: "API_PATH", method: HTTPMethod.post, headers: nil, encodingCompletion: { encoding in
switch encoding{
case .success(let req, _, _):
 req.uploadProgress(closure: { (prog) in
  progress?(prog)
 }).responseJSON { (resObj) in
  switch resObj.result{
  case .success:
if let resData = resObj.data{
 do {
  let res = try JSONSerialization.jsonObject(with: resData)
  print(res) // Success
 } catch let err{
  print(err)
 }
}
break
  case .failure(let err):
print(err)
break
  }
 }
 break
case .failure(let err):
 print(err)
 break
}
  })
 }catch let err{
  print(err)
 }

佳了闭于怎样用Alamofire上传图片(帖子)?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。