Alamofire照片上传与文件的正文密钥

时间:2018-05-29 14:36:18

标签: swift alamofire

我可以通过Postman上传照片,但在我的iOS应用程序中它失败了,我仍然从.success获得encodingCompletion这是非常奇怪的。

以下是我的代码的一部分

  

UpdateUserInfo

    //
    // Update user info
    //
    func updateUserInfo(){
        var imageData: Data!
        var url = ""
        if let userId = KeychainWrapper.standard.string(forKey: USER_ID_KEY){
            url = URL_USER_UPLOAD_PIC + userId
        }
        if pickedImage != nil{
            imageData = UIImagePNGRepresentation(pickedImage)
            //imageData = UIImageJPEGRepresentation(pickedImage!, 1.0)
        }
        let token = KeychainWrapper.standard.string(forKey: USER_LOGIN_TOKEN_KEY)!


        let headers: HTTPHeaders = [
            "Authorization": "Bearer \(token)"
        ]

        if imageData != nil{
            Alamofire.upload(multipartFormData: { (multipartFormData) in
                multipartFormData.append(imageData!, withName: "fileset", fileName: "file.png", mimeType: "image/png")
            }, to: url,
               method: .post,
               headers: headers,
               encodingCompletion: { encodingResult in
                switch encodingResult {
                case .success(let upload, _, _):
                    print("Donkey Success \(String(describing: upload.response?.statusCode))")
                    upload.responseString(completionHandler: { (response) in
                        debugPrint(response)
                    })
                case .failure(let encodingError):
                    print(encodingError)
                    print("Donkey Fail")
                }
            })
        }


    }

在我的邮递员中我有

  

邮差

enter image description here

我的第一个问题是,如果无法上传,我会收到.success?

我的第二个问题是,我是否需要输入密钥" pic" (在邮差中看到)我的请求中的某个地方?如果是这样的话?

感谢您提前提供任何帮助

1 个答案:

答案 0 :(得分:1)

在Post man中,图片密钥为pic,但在您的代码中为"fileset"

更改为

        multipartFormData.append(imageData!, withName: "pic", fileName: "file.png", mimeType: "image/png")
  

success是编码不上传流程的结果

     
    

EncodingResult是定义的MultipartFormDataEncodingResult     MultipartFormData编码是否成功并包含     编码结果作为关联值。 - 成功:代表成功的MultipartFormData编码并包含     新的UploadRequest以及                   流信息。 - 失败:用于表示MultipartFormData编码中的失败     包含编码