swift3.0 队列请求(上传图片)

本文介绍了如何在Swift 3.0中利用Alamofire实现图片的队列上传,通过创建队列组来管理多个上传任务。

首先用封装一个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)
        }
    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值