美文网首页iOS 学习
用最新的 Alamofire(swift 4.1) (带参数)p

用最新的 Alamofire(swift 4.1) (带参数)p

作者: _东阁堂主_ | 来源:发表于2018-04-18 19:21 被阅读406次

    用最新的 Alamofire(swift 4.1) (带参数)上传图片到服务器

    1,准备参数

    let image = UIImage(named: "xxx")
    //将图片转化为JPEG类型的data 后面的参数是压缩比例
    let jpegImage = UIImageJPEGRepresentation(image!, 0.5)
    //要传的参数(比如我们带用户的加密uid)
     let uid = ["uid" : user.uid]
     let ecodeUid = EncryptionHelper.getParamsString(uid as [String : AnyObject])
     //将参赛转化为data
    let ecodeData = ecodeUid.data(using: .utf8)
    

    2,开始上传

    //全部代码如下
    Alamofire.upload(multipartFormData: { (multipartFormData) in
        multipartFormData.append(ecodeData!, withName: "data")
        multipartFormData.append(jpegImage!, withName: "avatar", fileName: "avatar"+".jpeg", mimeType: "image/jpeg")
                }, to: "https://www.ka5188.com/app/api/v1/user/uploadImg" , encodingCompletion: { encodingResult in
                    ws!.hideLoading()
                    switch encodingResult {
                    case .success(let upload, _, _):
                        upload.responseJSON { response in
                            if let data = response.data {
                                let responseJson = JSON(data: data)
                                if responseJson["status"].intValue == 1 {
                                    //上传成功,刷新当前头像
                                    }
                                } else {
                                   let msg = responseJson["msg"].stringValue
                                   self.showMessage(msg)
                                }
                            }
                        }
                    case .failure(let encodingError):
                        log.debug(encodingError)
                        self.showMessage("上传图片失败")
                    }
                })
    

    说明和注意点

    //需要注意的地方 
     multipartFormData.append(ecodeData!, withName: "data")
    //第一个参数"ecodeData",就是我们加密的二进制uid
    /第二个参数"data"
    服务端以这个字段名获取加密的uid(个人以为应该用"uid")
    
    multipartFormData.append(jpegImage!, withName: "avatar", fileName: "avatar"+".jpeg", mimeType: "image/jpeg")
    //带一个参数"jpegImage",就是我们加密的二进制图片流
    //带二个参数"withName",后台通过西字段来获取图片
    //带三个参数"fileName",后台检图片类型的,主要是后缀名
    //带四个参数"mimeType",传输的文件类型。
    注 : 1,开始由于第二个参数和第三个参数弄混了,导制上传失败
          2,由于第三个参数没有加后缀".jpeg",导致后台输出(文件格式不支持)
          3,第三个参数mimeType 传入类型是图片
          下面给出官方解释,还有我们后台php部分代码
    
    

    官方解释如下
    
    image
    后端代码
    
    image

    相关文章

      网友评论

        本文标题:用最新的 Alamofire(swift 4.1) (带参数)p

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