Swift3.0 Alamofire 多张图片上传

1.第一层封装

import Alamofire
import Foundation
import UIKit

private let NetworkRequestShareInstance = NetworkRequest()

class NetworkRequest {
    class var sharedInstance : NetworkRequest {
        return NetworkRequestShareInstance
    }
}
extension NetworkRequest {
 //MARK: - 照片上传的封装
    ///
    /// - Parameters:
    ///   - urlString: 服务器地址
    ///   - params: ["flag":"","userId":""] - flag,userId       为上传的参数
    ///        flag - 666 信息上传多张   -000 头像上传
    ///   - data: image转换成Data
    ///   - name: fileName
    ///   - success:
    ///   - failture:、

func upLoadImageRequest(urlString : String, params:[String:String], data: [Data], name: [String],success : @escaping (_ response : [String : AnyObject])->(), failture : @escaping (_ error : Error)->()){
 //header的上传
 let headers = ["content-type":"multipart/form-data"]
Alamofire.upload(multipartFormData: { multipartFormData in
  //666多张图片上传
  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")

//multipartFormData.append(<#T##data: Data##Data#>, withName: <#T##String#>, fileName: <#T##String#>, mimeType: <#T##String#>)  ---使用的方法
//遍历图片,挨个添加,withName-name和后台确定是什么                
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 {   
//将image转成Data 
       imageDataArray.append(UIImageJPEGRepresentation(photoArray[i].image, 0.1)!)

//利用时间加编号生成name
 let imageName = String(describing: NSDate()) + "\(i).png"
 imageNameArray.append(imageName)
  }
 //参数666-多张上传
 let params: [String: String] = ["userId":"传入userId", "flag":"666"]
NetConnect.bm_upload_photo_info(params:params , data: imageDataArray, name: imageNameArray, success: { response in
      //这里用的是SwiftyJSON(可gitHub搜索使用方法)      
      let json = JSON(response)
       //"000000"表示成功     
      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)
        })
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值