使用 Alamofire 上传多部分表单数据文件
Posted
技术标签:
【中文标题】使用 Alamofire 上传多部分表单数据文件【英文标题】:Multipart form-data file uploading using Alamofire 【发布时间】:2015-07-31 16:40:16 【问题描述】:我看过this 或that 之类的问题之一,但它仍然无法正常工作。
我还有一个问题,我应该从函数multipartFormData.appendBodyPart
中输入什么fileURL
参数?
应该是从 PC 上获取图像的一种方式,还是必须将图像添加到 Images.xcassets 中?我应该在这里发送什么?
【问题讨论】:
请更清楚您的问题是什么。 你没看到图片有错误吗? 是的,但将您的问题包含在标题或正文中会有所帮助,而不是指望人们从图像中推断出来。 【参考方案1】:您似乎需要解决三个问题。
-
使用
.POST
而不是POST
。
fileURL
必须是指向文件系统上文件的有效NSURL
。您不能只使用文件名。
您正在使用responseString
序列化程序,但将闭包中的第三个参数命名为JSON
。然后你让result
进入s
并尝试打印出来。 result
参数甚至在任何地方都不存在。相反,您应该print(JSON)
。
希望这有助于澄清一些事情。
【讨论】:
【参考方案2】:尝试使用.POST
而不是POST
作为替代解决方案,上传编码文件并将其作为 POST 的参数发送。
// `data` is NSData
let base64String = data!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros)
let parameters = ["image_data": base64String] as [String: AnyObject]
Alamofire.request(.POST, "http://your-url.com", parameters: parameters)
这种方法的缺点是由于编码,数据会变大 %33。如果您有带宽问题,这可能不是一个好的解决方案。
【讨论】:
如何上传base64字符串数组? 有趣。如果数组长度不变,只需对多个参数执行相同操作即可。 你能检查一下我的这个问题吗? @G.Abhisek 我同意这些解决方案。使用 MultipartPostRequest 或者您可以在完成后将图像上传到 AWS S3 之类的东西,向服务器发送请求以检查来自 AWS S3 的 x、y、z id。但 MultipartPostRequest 仍然是最好的解决方案。以上是关于使用 Alamofire 上传多部分表单数据文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Alamofire 和 BOX API 的多部分表单上传