美文网首页
iOS Swift用Alamofire图片和其他参数一起上传

iOS Swift用Alamofire图片和其他参数一起上传

作者: 小沫360 | 来源:发表于2016-06-12 14:40 被阅读1855次

用过AFNetworking一定对上面的上传图片的方式不陌生,其中parameters一般都放一个字典,里面放一些其他的参数

 [manager POST:@"www.png.com" parameters:@{@"name":@"小沫"} constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        
        //在这里拼接formData
        
        
    } success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {
        
        //上传成功返回responseObject
        
        
    } failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {
        
        //失败返回error
        
        
    }];

AlamofireAFNetworking传的参数差不多,但是少了parameters这个参数,如果同时要传其他的参数,需要在multipartFormData后面拼接

let parameters = [
            "par1": "value",
            "par2": "value2"]    

 let URL = "YOUR_URL.php"

 let image = UIImage(named: "image.png")

 Alamofire.upload(.POST, URL, multipartFormData: {
                multipartFormData in

                if let _image = image {
                    if let imageData = UIImageJPEGRepresentation(_image, 0.5) {
                        multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "file.png", mimeType: "image/png")
                    }
                }

                for (key, value) in parameters {
                    multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
                }

            }, encodingCompletion: {
                encodingResult in

                switch encodingResult {
                case .Success(let upload, _, _):
                     upload.responseObject { (response: Response<UploadData, NSError>) -> Void in

                     switch response.result {
                     case .Success:
                         completionHandler?(success: true)
                     case .Failure(let error):
                         completionHandler?(success: false)
                     }

                 }
                case .Failure(let encodingError):
                    print(encodingError)
                }
        })

相关文章

网友评论

      本文标题:iOS Swift用Alamofire图片和其他参数一起上传

      本文链接:https://www.haomeiwen.com/subject/dmbedttx.html