如何通过多部分API发送[String:Any]字典?

时间:2019-06-04 06:07:42

标签: ios swift alamofire alamofireimage

我正在尝试使用带有[String:Any]参数的Alamofire发送多部分图像数据,我只能发布[String:String]参数

对于[String:String]的行为就像https://stackoverflow.com/a/40440371/4466607

但是现在我必须像这样发布:  [PayLoad],我必须使用image键发送图像,该键已经在执行中了。

在邮递员中工作正常 enter image description here

问题: 如何在Swift中发布字典类型为[String:Any]的图像 请帮助

2 个答案:

答案 0 :(得分:0)

  

如果您的值为“任意类型”,请检查是否可能对您有所帮助。

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

答案 1 :(得分:0)

粗略的解决方案:
如果您坚持将Image数据放入字典中,则可以将图像数据转换为Base64代码,然后将Base64字符串放入字典中。您将向服务器提交一个大型JSON。我认为这不是一个好的解决方案。

更好的解决方案:
另一个WebApi提交图像数据,该API将返回上传的图像URL,例如https://www.example.com/image1234.jpg,或者仅返回图像ID,例如“ 1234”,该ID最近可以嵌入到URL中。最后,您使用图像URL或ID(例如{"image":"https://www.example.com/image1234.jpg"}{"image":1234})提交JSON数据。