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

Multipart form-data file uploading using Alamofire

我已经看过 or 之类的问题,但仍然无法解决问题。

还有一个问题,我应该从函数 multipartFormData.appendBodyPartfileURL 参数输入什么?

应该是从PC上获取图片的方式,还是必须将图片添加到Images.xcassets?我应该在这里发送什么?

尝试使用 .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。如果您有带宽问题,这可能不是一个好的解决方案。

您似乎有三个问题需要解决。

  1. 使用 .POST 而不是 POST
  2. fileURL 必须是指向文件系统上文件的有效 NSURL。您不能只使用文件名。
  3. 您正在使用 responseString 序列化程序,但在闭包中将第三个参数命名为 JSON。然后你让 result 进入 s 并试图打印出来。 result 参数根本不存在。相反,您应该 print(JSON).

希望这有助于澄清一些事情。