Alamofire upload image and parameter

Zion·2021년 4월 19일
1

음... 견적서를 서버에 보내야 한다.
견적서에는 image들 String, Int 값들이 들어 있는 parameter를 보내야 한다.

이렇게 항목이 많다.
apply_img_ts : Image Array를 보내야 한다.
addr_id : 값이 없으면 보내지 않는다.

1. PHAsset -> UIImage -> Data (Array)

PHAsset Array -> UIImage Array

// 핸드폰에 있는 사진은 PHAsset이다. 이걸 UIImage로 변환하는 함수.
func getAssetThumbnail(assets: [PHAsset]) -> [UIImage] {
	var arrayOfImages = [UIImage]()
    for asset in assets {
    	let manager = PHImageMManager.default()
        let option = PHImageRequestOptions()
        var image = UIImage()
        option.isSynchronous = true
        manager.requestImage(for: asset,
        		    targeySize: CGSize(width: 100, height: 100),
                             contentMode: .asspectFit,
                             options: option,
                             resultHandler: { (result, info) -> Void in
                             	image = result!
                             	arrayOfImages.append(image)
        				    })
     }
     return arrayOfImages
}

UIImage Array -> Data Array

  var images = [UIImage]()
  images = getAssetThumbnail(assets: photoContens!)
  // photoContents는 앨범에서 가져온 PHAsset array
  
  var data = [Data]()
  for i in images.count {
  	let imageData = images[i].jpegData(compressionQuality: 0.5)
    data.append(imageData!)
  }
  
  //data 가 Data Array가됨.

2. Alamofire Comm.

어려웠던 점은 기존에 AF.request 함수를 써서 parameter덩어리를 보내줬었다.
근데 지금은 AF.upload 함수를 써야 해 ~

	AF.upload(multipartFormData: { multipart in

    		for (key, value) in parameter {
        		if let temp = value as? String {
            		multipart.append(temp.data(using .utf8)!, withName: key)
            	}
            	if let temp = value as? Int {
            		multipart.append("\(temp)".data(using: .utf8)!, withName: key)
            	}
            
        	}
        
        	//IMAGE PART
        	for image in data {
        		multipart.append(image,
            				withName: "apply_img_ts",
                        		fileName: "\(image).jpg",
                            		mimeType: "image/jpeg")
        	}
     	}, to: url
      	, headers: headers).uploadProgress(queue: .main, closure: { progress in
      	
		print("Upload Progress: \(progress.fractionCompleted)")
        
     	}).responseJSON(completionHandler: { data in
     		switch data.result {
        	case .success(_):
        		do {
            		print("success")
            	}
        	case .failule(let error):
        		print(error.localizedDescription)
        	}
     	})
      
profile
어제보다만 나아지는

0개의 댓글