1.第一层封装
import Alamofire
import Foundation
import UIKit
private let NetworkRequestShareInstance = NetworkRequest()
class NetworkRequest {
class var sharedInstance : NetworkRequest {
return NetworkRequestShareInstance
}
}
extension NetworkRequest {
func upLoadImageRequest(urlString : String, params:[String:String], data: [Data], name: [String],success : @escaping (_ response : [String : AnyObject])->(), failture : @escaping (_ error : Error)->()){
let headers = ["content-type":"multipart/form-data"]
Alamofire.upload(multipartFormData: { multipartFormData in
let flag = params["flag"]
let userId = params["userId"]
multipartFormData.append((flag?.data(using: String.Encoding.utf8)!)!, withName: "flag")
multipartFormData.append( (userId?.data(using: String.Encoding.utf8)!)!, withName: "userId")
for i in 0..<data.count {
multipartFormData.append(data[i], withName: "appPhoto", fileName: name[i], mimeType: "image/png")
}
},
to: urlString,
headers: headers,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
if let value = response.result.value as? [String: AnyObject]{
success(value)
}
}
case .failure(let encodingError):
failture(encodingError)
}
}
)
}
}
2.第二层封装
/// 2.11照片信息上传
static func bm_upload_photo_info(params:[String: String], data: [Data], name: [String],
success:@escaping (_ response:[String:AnyObject]) -> (), failure:@escaping(_ error: Error) -> ()){
NetworkRequest.sharedInstance.upLoadImageRequest(urlString: "服务器地址",params:params, data: data, name: name, success: { (response) in
success(response)
}, failture: { (error) in
failure(error)
})
}
3.具体使用
func uploadPhoto(){
guard photoArray.count >= 2 else {
self.showHint(in: self.view, hint: "最少上传两张照片")
return
}
var imageDataArray:[Data] = []
var imageNameArray:[String] = []
for i in 0..<photoArray.count {
imageDataArray.append(UIImageJPEGRepresentation(photoArray[i].image, 0.1)!)
let imageName = String(describing: NSDate()) + "\(i).png"
imageNameArray.append(imageName)
}
let params: [String: String] = ["userId":"传入userId", "flag":"666"]
NetConnect.bm_upload_photo_info(params:params , data: imageDataArray, name: imageNameArray, success: { response in
let json = JSON(response)
guard json["RET_CODE"] == "000000" else{
return self.showHint(in: self.view, hint: json["RET_DESC"].stringValue)
}
self.showHintInKeywindow(hint: "照片上传成功!")
}, failure: { error in
PrintLog(error)
})
}