如何在多部分 API 中发送 [String:Any] 字典?
Posted
技术标签:
【中文标题】如何在多部分 API 中发送 [String:Any] 字典?【英文标题】:How to send [String:Any] dictionary in multipart API? 【发布时间】:2019-06-04 06:07:42 【问题描述】:我正在尝试使用带有 [String:Any] 参数的 Alamofire
发送多部分图像数据,我只能发布 [String:String]
参数
对于[String:String]
的行为类似于https://***.com/a/40440371/4466607
但现在我必须像这样发布:
[ PayLoad ] 我必须使用 image
键发送图像,我已经在这样做了。
在邮递员中它工作正常
问题:
我如何在 Swift 中使用 Dictionary 类型 [String:Any]
发布图像
请帮忙
【问题讨论】:
【参考方案1】:如果您的值是 Any 类型,请检查这可能对您有帮助。
for (key, value) in params
let paramsData:Data = NSKeyedArchiver.archivedData(withRootObject: value)
formData.append(paramsData, withName: key)
【讨论】:
我已经这样做了,我需要将[String,Any]
类型的有效负载与我的图像一起发布
让 updateInfo: [String:Any] = ["email":usernameText] for (key, value) in updateInfo multipartFormData.append(key.data(using: .utf8)!, withName: value as!String) - 试试这段代码
不,您添加的数据有误,withName : key
我知道如何添加但无法以这种方式工作,请尝试然后发布【参考方案2】:
粗略的解决方案: 如果你坚持将Image数据放入字典,你可以将图像数据转换成Base64编码,然后将Base64字符串放入字典中。您将向服务器提交一个大的 JSON。我认为这不是一个好的解决方案。
更好的解决方案:
另一个用于提交图像数据的 WebApi,该 API 将返回上传的图像 URL,如 https://www.example.com/image1234.jpg
,或者只返回最近可以嵌入到 URL 中的图像 ID,如“1234”。最后,您提交带有图像 URL 或 ID 的 JSON 数据,例如 "image":"https://www.example.com/image1234.jpg"
或 "image":1234
。
【讨论】:
不,我不想把图片放在字典里以上是关于如何在多部分 API 中发送 [String:Any] 字典?的主要内容,如果未能解决你的问题,请参考以下文章
VueJS:如何在多页面应用程序中使用路由来发送 url 查询参数?