通过Swift 3和Alamofire 4上传带有JSON和自定义标题的照片/文件iOS |迅速

前端之家收集整理的这篇文章主要介绍了通过Swift 3和Alamofire 4上传带有JSON和自定义标题的照片/文件iOS |迅速前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要使用 Image文件JSON调用Multipart请求.

我试过这个,但仍然得到错误.

  1. // define parameters
  2. let parameters = [
  3. "hometown": "yalikavak","living": "istanbul"
  4. ]
  5.  
  6. Alamofire.upload(multipartFormData: { multipartFormData in
  7. if let imageData = UIImageJPEGRepresentation(image,1) {
  8. multipartFormData.append(imageData,withName: "file",fileName: "file.png",mimeType: "image/png")
  9. }
  10.  
  11. for (key,value) in parameters {
  12. multipartFormData.append((value?.data(using: .utf8))!,withName: key)
  13. }},to: "upload_url",method: .post,headers: ["Authorization": "auth_token"],encodingCompletion: { encodingResult in
  14. switch encodingResult {
  15. case .success(let upload,_,_):
  16. upload.response { [weak self] response in
  17. guard let strongSelf = self else {
  18. return
  19. }
  20. debugPrint(response)
  21. }
  22. case .failure(let encodingError):
  23. print("error:\(encodingError)")
  24. }
  25. })
  26. }

如何发送JSON?

在单个请求中尝试使用此代码进行多个上传图像,此代码已经可用.
  1. // For Pass Valid Parameters & number of Images in Array in Image Upload Function
  2. var dicImgData : NSMutableDictionary? = NSMutableDictionary()
  3.  
  4. if let img = UIImage(named: "Your Image") {
  5. if let data:Data = UIImagePNGRepresentation(img) {
  6. var imageData : NSData = data
  7. dicImgData! .setObject(imageData,forKey: "data" as NSCopying)
  8. dicImgData! .setObject("file",forKey: "name" as NSCopying)
  9. dicImgData! .setObject("file.png",forKey: "fileName" as NSCopying)
  10. dicImgData! .setObject("image/png",forKey: "type" as NSCopying)
  11.  
  12. let dicParameter = [
  13. "hometown": "yalikavak","living": "istanbul"
  14. ]
  15.  
  16. self.uploadImage(url: "Your URL",Parameter: dicParameter,Images: [dicImgData])
  17. }
  18. }

上传功能

  1. func uploadImage (url: String,Parameter param : NSDictionary,Images arrImage: NSArray) -> Void
  2. {
  3. var requestURL : String! = url
  4. let headers = [
  5. "Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==","Accept": "application/json",]
  6.  
  7. print("---------------------")
  8. print("Request URL :- \(requestURL)")
  9. print("---------------------")
  10.  
  11. Alamofire.upload(multipartFormData: { (data) in
  12.  
  13. for (key,value) in param {
  14. data.append((value as! String).data(using: .utf8)!,withName: key as! String)
  15. }
  16.  
  17. for imageInfo in arrImage
  18. {
  19. var dicInfo : NSDictionary! = imageInfo as! NSDictionary
  20. data.append(dicInfo["data"] as! Data,withName: dicInfo["name"] as! String,fileName: dicInfo["fileName"] as! String,mimeType: dicInfo["type"] as! String)
  21. dicInfo = nil
  22. }
  23.  
  24. },to: requestURL,headers:nil,encodingCompletion: { (encodeResult) in
  25. switch encodeResult {
  26. case .success(let upload,_):
  27.  
  28. upload.responseJSON(completionHandler: { (response) in
  29.  
  30. switch response.result
  31. {
  32. case .success(let responseJSON):
  33. guard let dicResponse = responseJSON as? NSDictionary else{
  34. return
  35. }
  36.  
  37. print("Response : \((dicResponse))")
  38.  
  39. case .failure(let error):
  40.  
  41. print(error)
  42.  
  43. break
  44. }
  45. })
  46. case .failure(let error):
  47. print(error)
  48. break
  49. }
  50. })
  51. }

猜你在找的Swift相关文章