음... 견적서를 서버에 보내야 한다.
견적서에는 image들 String, Int 값들이 들어 있는 parameter를 보내야 한다.
이렇게 항목이 많다.
apply_img_ts : Image Array를 보내야 한다.
addr_id : 값이 없으면 보내지 않는다.
// 핸드폰에 있는 사진은 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
}
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가됨.
어려웠던 점은 기존에 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)
}
})