import Foundation
import Alamofire
//上传图片 ,multipartFormData 上传。key = attach
extension HttpManager {
/**
上传单张图片
- parameter p_w_picpath: UIImage
- parameter success: 成功回调图片 model
- parameter failure: 失败
*/
class func uploadSingleImage(
_ p_w_picpath:UIImage,
success:@escaping (_ p_w_picpathModel: UploadImageModel) ->Void,
failure:@escaping (Void) ->Void)
{
let parameters = [
"access_token": UserInstance.accessToken
]
let p_w_picpathData = UIImageJPEGRepresentation(p_w_picpath, 0.7)
/*
这里需要填写上传图片的 API
*/
let uploadIImageURLString = ""
Alamofire.upload(
multipartFormData: { multipartFormData in
if p_w_picpathData != nil {
multipartFormData.append(p_w_picpathData!, withName: "attach", fileName: "file", mimeType: "p_w_picpath/jpeg")
}
for (key, value) in parameters {
multipartFormData.append(value!.data(using: String.Encoding.utf8)!, withName: key)
}
},
to: uploadIImageURLString,
encodingCompletion: { result in
switch result {
case .success(let upload, _, _):
upload.responseJSON { response in
switch response.result {
case .success(let data):
/*
根据 JSON 返回格式,做好 UploadImageModel 的 key->value 映射, 这里只是个例子
*/
let model: UploadImageModel = TSMapper<UploadImageModel>().map(JSONObject:data)!
success(model)
case .failure( _):
failure()
}
}
case .failure(let encodingError):
debugPrint(encodingError)
}
})
}
/**
上传多张图片
- parameter p_w_picpathsArray: 图片数组
- parameter success: 返回图片数组 model,和图片逗号分割的字符串 "123123,23344,590202"
- parameter failure: 失败
*/
class func uploadMultipleImages(
_ p_w_picpathsArray:[UIImage],
success:@escaping (_ p_w_picpathModel: [UploadImageModel], _ p_w_picpathsId: String) ->Void,
failure:@escaping (Void) ->Void)
{
guard p_w_picpathsArray.count != 0 else {
assert(p_w_picpathsArray.count == 0, "Invalid p_w_picpaths array") // here
failure()
return
}
for p_w_picpath in p_w_picpathsArray {
guard p_w_picpath.isKind(of: UIImage.self) else {
failure()
return
}
}
let resultImageIdArray = NSMutableArray()
let resultImageModelArray = NSMutableArray()
let emtpyId = ""
for _ in 0..<p_w_picpathsArray.count {
resultImageIdArray.add(emtpyId)
}
let group = DispatchGroup()
var index = 0
for (p_w_picpath) in p_w_picpathsArray {
group.enter();
self.uploadSingleImage(
p_w_picpath,
success: {model in
let p_w_picpathId = model.p_w_picpathId
resultImageIdArray.replaceObject(at: index, with: p_w_picpathId!)
resultImageModelArray.add(model)
group.leave();
},
failure: {
group.leave();
}
)
index += 1
}
group.notify(queue: DispatchQueue.main, execute: {
let checkIds = resultImageIdArray as NSArray as! [String]
for p_w_picpathId: String in checkIds {
if p_w_picpathId == emtpyId {
failure()
return
}
}
let ids = resultImageIdArray.componentsJoined(by: ",")
let p_w_picpaths = resultImageModelArray as NSArray as! [UploadImageModel]
success(p_w_picpaths, ids)
})
}
}
//
//import UIKit
//
////简写的 key->value
//public typealias ts_parameters = [String : AnyObject]
//public typealias SuccessClosure = (AnyObject) -> Void
//public typealias FailureClosure = (NSError) -> Void
//
//class HttpManager: NSObject {
// class var sharedInstance : HttpManager {
// struct Static {
// static let instance : HttpManager = HttpManager()
// }
// return Static.instance
// }
//
// fileprivate override init() {
// super.init()
// }
//}
//
//import Foundation
//import ObjectMapper
//
//// 上传图片接口返回的图片 Model
//class UploadImageModel : TSModelProtocol {
// var originalURL : String?
// var originalHeight : CGFloat?
// var originalWidth : CGFloat?
// var thumbURL : String?
// var thumbHeight : CGFloat?
// var thumbWidth : CGFloat?
// var p_w_picpathId : Int?
//
// required init?(map: Map) {
//
// }
//
// func mapping(map: Map) {
// originalURL <- map["original_URL"]
// originalHeight <- map["original_height"]
// originalWidth <- map["original_width"]
// p_w_picpathId <- map["p_w_picpath_Id"]
// thumbURL <- map["thumb_URL"]
// thumbHeight <- map["thumb_height"]
// thumbWidth <- map["thumb_width"]
// }
//}