繁体   English   中英

带标头的Alamofire 4分段上传

[英]Alamofire 4 multipart upload with header

如何使用Alamofire v4用自己的标题上传? 在v3的情况下,我为此编写了自己的函数,例如以下代码,但是对于v4我不能做同样的事情。

static func upload(method: Alamofire.Method, urlString: String, multipartFormData: (data: Alamofire.MultipartFormData) -> (), completionHandler: (
    response: Response<AnyObject, NSError>, statusCode:Int, json:JSON) -> ()){
        Alamofire.upload(method, urlString, headers: MyRequest.makeHeaders(), multipartFormData: multipartFormData, encodingCompletion: {
            encodingResult in
            switch encodingResult {
            case .Success(let upload, _, _):
                upload.responseJSON { response in
                    switch response.result {
                    case .Failure:
                        log.error("Upload request failed!!")
                    case .Success:
                        completionHandler(response: response, statusCode: (response.response?.statusCode)!, json:JSON(response.result.value!))
                    }
                }
            case .Failure(let error):
                log.warning((error as NSError).localizedDescription)
            }
        })
}

我尝试了以下代码,但没有用

static func upload(_ method: Alamofire.HTTPMethod, urlString: String, multipartFormData: (Alamofire.MultipartFormData) -> Swift.Void, completionHandler: @escaping
    (_ response: NSDictionary, _ statusCode:Int, _ json:JSON) -> Void){

    Alamofire.upload(multipartFormData: multipartFormData, to: urlString, method: method, headers: MyRequest.makeHeaders(), encodingCompletion: {
        encodingResult in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseJSON { response in
                switch response.result {
                case .failure:
                    log.error("Upload request failed!!")
                case .success:
                    completionHandler(response: response, statusCode: (response.response?.statusCode)!, json:JSON(response.result.value!))
                }
            }
        case .failure(let error):
            log.warning((error as NSError).localizedDescription)
        }
    })

}

试试下面的代码:

Alamofire.upload(multipartFormData:{ multipartFormData in
     multipartFormData.append(unicornImageURL, withName: "unicorn")
     multipartFormData.append(rainbowImageURL, withName: "rainbow")},
   usingThreshold:UInt64.init(),
   to:"https://httpbin.org/post",
   method:.post, 
   headers:["Authorization": "auth_token"], 
   encodingCompletion: { encodingResult in
    switch encodingResult {
    case .success(let upload, _, _):
        upload.responseJSON { response in
            debugPrint(response)
        }
    case .failure(let encodingError):
        print(encodingError)
    }
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM