【问题标题】:Alamofire 4 upload with parametersAlamofire 4 上传参数
【发布时间】:2017-02-10 02:45:30
【问题描述】:

我正在执行以下操作以上传带参数的 PNG 文件:

    Alamofire.upload(
        multipartFormData: { multipartFormData in
            multipartFormData.append(UIImagePNGRepresentation(tempImage!)!, withName: "file", fileName: "picture.png", mimeType: "image/png")

            // Send parameters
            multipartFormData.append((UserDefaults.standard.value(forKey: Email) as! String).data(using: .utf8)!, withName: "email")
            multipartFormData.append("png".data(using: .utf8)!, withName: "type")

        },
        to: "user/picture",
        encodingCompletion: { encodingResult in
            switch encodingResult {
            case .success(let upload, _, _):
                upload.responseJSON { response in
                    debugPrint("SUCCESS RESPONSE: \(response)")
                }
            case .failure(let encodingError):
                self.removeSpinnerFromView()
                print("ERROR RESPONSE: \(encodingError)")

            }
        }
    )

问题是在我的服务器上我看不到 emailtype 表单字段。我遵循了在线发布的示例。我应该为此做些什么不同的事情吗?

编辑

如果我删除我放置的部分:

multipartFormData.append(UIImagePNGRepresentation(tempImage!)!, withName: "file", fileName: "picture.png", mimeType: "image/png")

THEN 包含参数。否则不是,我认为这是 Alamofire 4.0.1 中的一个错误。

【问题讨论】:

    标签: swift3 alamofire


    【解决方案1】:

    如果你的值是 Any 类型,你可以这样改变它

    for (key, value) in params {
        let paramsData:Data = NSKeyedArchiver.archivedData(withRootObject: value)
        formData.append(paramsData, withName: key)
    }
    

    【讨论】:

      【解决方案2】:

      它在我这边工作正常。

      我正在使用以下代码:

      let parameters = [
                  "file_name": "swift_file.jpeg"
              ]
      
      Alamofire.upload(multipartFormData: { (multipartFormData) in
                  multipartFormData.append(UIImageJPEGRepresentation(self.photoImageView.image!, 1)!, withName: "photo_path", fileName: "swift_file.jpeg", mimeType: "image/jpeg")
                  for (key, value) in parameters {
                      multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
                  }
                  }, to:"http://sample.com/upload_img.php")
          { (result) in
              switch result {
              case .success(let upload, _, _):
      
                  upload.uploadProgress(closure: { (progress) in
                      //Print progress
                  })
      
                  upload.responseJSON { response in
                      //print response.result
                  }
      
              case .failure(let encodingError):
                     //print encodingError.description
              }
          }
      

      【讨论】:

      • 在 for (key, value) in parameters 中,Value 类型是 'AnyObject' 吗?
      • @MicroR 它在我这边工作正常。可能是后端问题。
      • @EktaPadaliya。你能指导如何使用 swift 3 alamofire 4 上传图片吗?我已经为 swift 2.3 做过,但不能用 swift 3 实现。请指导我。
      • @EktaPadaliya。不,但我还需要包含标题我该如何添加
      • @UmaMadhavi 你必须添加“import Alamofire”。
      猜你喜欢
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 2017-04-22
      • 1970-01-01
      • 2016-10-06
      • 2023-03-22
      相关资源
      最近更新 更多