首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Alamofire 5上传encodingCompletion

Alamofire 5上传encodingCompletion
EN

Stack Overflow用户
提问于 2019-03-04 22:12:24
回答 3查看 5.5K关注 0票数 11

我正在使用Swift 4和Alamofire 5,我上传了两张multibart照片,我想打印进度

代码语言:javascript
复制
 AF.upload(
        multipartFormData: { MultipartFormData in

            MultipartFormData.append(firstPic, withName: "first_pic", fileName: "image.jpeg", mimeType: "image/jpeg")
            MultipartFormData.append(secondPic, withName: "second_pic", fileName: "image.jpeg", mimeType: "image/jpeg")

    }, to: urlString, encodingCompletion: { encodingResult in
        switch encodingResult {
        case .Success(let upload, _, _):
            upload.progress { bytesRead, totalBytesRead, totalBytesExpectedToRead in
                print(totalBytesRead)
            }
            upload.responseJSON { request, response, result in
                print(result)
            }
        case .Failure(let encodingError):
            print(encodingError)
        }
    })

这会得到一个错误,说

参数标签'(multipartFormData:,to:,encodingCompletion:)‘与任何可用的重载都不匹配

是库更新了代码还是什么??

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-05 08:39:09

Alamofire 5不再需要encodingCompletion!相反,多部分表单编码是作为标准的now异步请求流程的一部分完成的,它将在Request上返回错误,并且可以在validateresponse*调用期间使用这些错误。

票数 7
EN

Stack Overflow用户

发布于 2019-03-27 17:17:52

请根据您的需要修改

代码语言:javascript
复制
func upload(image: Data, to url: Alamofire.URLRequestConvertible, params: [String: Any]) {
    AF.upload(multipartFormData: { multiPart in
        for (key, value) in params {
            if let temp = value as? String {
                multiPart.append(temp.data(using: .utf8)!, withName: key)
            }
            if let temp = value as? Int {
                multiPart.append("\(temp)".data(using: .utf8)!, withName: key)
            }
            if let temp = value as? NSArray {
                temp.forEach({ element in
                    let keyObj = key + "[]"
                    if let string = element as? String {
                        multiPart.append(string.data(using: .utf8)!, withName: keyObj)
                    } else
                        if let num = element as? Int {
                            let value = "\(num)"
                            multiPart.append(value.data(using: .utf8)!, withName: keyObj)
                    }
                })
            }
        }
        multiPart.append(image, withName: "file", fileName: "file.png", mimeType: "image/png")
    }, with: url)
        .uploadProgress(queue: .main, closure: { progress in
            //Current upload progress of file 
            print("Upload Progress: \(progress.fractionCompleted)")
        })
        .responseJSON(completionHandler: { response in
            //Do what ever you want to do with response
                if let error = response.error {
                    print(error)
                }
                guard let data = response.value else {
                    return 
                }
                print(value)
        })
}
票数 18
EN

Stack Overflow用户

发布于 2019-05-23 02:25:02

代码语言:javascript
复制
let headers: HTTPHeaders = [
            /* "Authorization": "your_access_token",  in case you need authorization header */
            "Content-type": "multipart/form-data"
        ]


            AF.upload(
                multipartFormData: { multipartFormData in
                    multipartFormData.append(imageOrVideo!.jpegData(compressionQuality: 0.5)!, withName: "upload_data" , fileName: "file.jpeg", mimeType: "image/jpeg")
            },
                to: "http://----/new.php", method: .post , headers: headers)
                .response { resp in
                    print(resp)


            }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54985001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档