swift利用Alamofire上传图片

来源:互联网 发布:韩国美女直播软件app 编辑:程序博客网 时间:2024/05/29 02:04

后台的接口数据如下:

接口名称 上传头像
接口地址 /data/upload
传入参数 MultipartFile file, String phoneId, Integer phoneType
传出结果 //0 ok, 1 空文件, 2 文件写失败


分析: 接口需要传三个参数,file为图片的二进制文件,String类型的phoneId,Integer类型的phoneType


Alamofire上传图片,用于传递参数的类是multipartFormData,利用multipartFormData.appendBodyPart添加参数即可,内部会自动出来参数


private func upload(uploadImage:UIImage,address: String,scale: Double) {


        Alamofire.upload(.POST, address, multipartFormData: { (multipartFormData)in

            

                let data =UIImageJPEGRepresentation(uploadImage,scale)

                let imageName =String(NSDate()) +".png"


            //multipartFormData.appendBodyPart(data: ,name: ,fileName: ,mimeType: )这里把图片转为二进制,作为第一个参数

            multipartFormData.appendBodyPart(data: data!, name:"file", fileName: imageName, mimeType:"image/png")

            

            //把剩下的两个参数作为字典,利用 multipartFormData.appendBodyPart(data: name: )添加参数,

            //因为这个方法的第一个参数接收的是NSData类型,所以要利用 NSUTF8StringEncoding 把字符串转为NSData 

            let param = ["phoneId" :HCUserModel.sharedInstance.phoneId!,"phoneType" : "1"]


           //遍历字典

           for (key, value)in param {

           multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)

            }

            

        }) { (encodingResult) in

            switch encodingResult {

            case .Success(let upload,_, _):

                upload.responseJSON(completionHandler: { (response)in

                    iflet myJson = response.result.value {

                        

                        if myJsonas! NSObject ==0 {

                         print("上传成功")                            

                        }else {

                            print("上传失败")

                        }

                    }

                })

            case .Failure(let error):

                print(error)

            }

        }

    }

1 0
原创粉丝点击