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)
})
}