首先用封装一个Alamofire上传单个文件的方法
func upload(description: String, data: Data, success: @escaping (JSON)->Void, failure: @escaping (MYAFError)->Void) {
Alamofire.upload(multipartFormData: { (mutData) in
mutData.append(data, withName: "file", fileName: "img", mimeType: "image/png")
mutData.append("1".data(using: .utf8)!, withName: "type")
}, to: apis.baseUrl+apis.fileUploadUrl+finalUrl) { (result) in
switch result {
case .success(request: let upd, streamingFromDisk: _, streamFileURL: _):
upd.responseJSON(completionHandler: { (response) in
if response.result.isSuccess {
let json = JSON(data: response.data!)
success(json)
} else {
// 处理错误
}
})
case .failure(let error):
failure(error)
}
}
}
建立队列组, 上传图片
func groupUpload(descriptions: [String], datas: [Data], success: @escaping ([String])->Void, failure: @escaping (MYAFError)->Void) {
// 创建队列组
let group = DispatchGroup()
// 用来上传结果的数组
var results = [String]()
for _ in datas {
results.append("")
}
for idx in 0..<datas.count {
// 进入队列组
group.enter()
upload(description: descriptions[idx], data: datas[idx], success: { (response) in
DLog("图片\(idx)上传成功")
results[idx] = UploadFileModel(swiftyJSON: response).url
DLog(results[idx])
// 离开队列组
group.leave()
}, failure: { (error) in
DLog("图片\(idx)上传失败")
group.leave()
}, HUDView: nil)
}
group.notify(queue: .main) {
DLog("全部上传完成")
DLog(results)
success(results)
}
}
本文介绍了如何在Swift 3.0中利用Alamofire实现图片的队列上传,通过创建队列组来管理多个上传任务。
986

被折叠的 条评论
为什么被折叠?



