使用Alamofire进行多部分表单数据文件上传

4
我看过像 这个 或者 那个 的问题,但仍然无法工作。 enter image description here 此外,我有一个关于从函数 multipartFormData.appendBodyPart 输入 fileURL 参数的问题。
它应该是从电脑上获取图像的路径,还是图像必须添加到 Images.xcassets 中?在这里应该发送什么?

请更清楚地说明你的问题是什么。 - lintmouse
你看不到图片上的错误吗? - SwiftStudier
是的,但最好在标题或正文中包含您的问题,而不是期望人们从图像中推断出来。 - lintmouse
2个回答

6
看起来你有三个问题需要解决:
  1. 使用 .POST 而不是 POST
  2. fileURL 需要是一个指向文件系统上的文件的有效 NSURL,不能仅仅使用文件名。
  3. 你正在使用 responseString 序列化器,但是在闭包的第三个参数中命名为 JSON。然后你让 result 进入 s 并试图将其打印出来。但是实际上,result 参数根本不存在。相反,你应该打印 JSON
希望这能帮助你澄清一些问题。

1
尝试使用 .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
有趣。如果数组长度是恒定的,只需使用多个参数执行相同的操作。 - Thellimist
你能否帮我检查一下这个问题? - G.Abhisek
@G.Abhisek 我同意这些解决方案。使用MultipartPostRequest或者你可以将图片上传到像AWS S3这样的地方,完成后向服务器发送请求,检查来自AWS S3的x、y、z id。但是MultipartPostRequest仍然是最好的解决方案。 - Thellimist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接