使用 Alamofire 上传多部分表单数据文件
Multipart form-data file uploading using Alamofire
我已经看过 or 之类的问题,但仍然无法解决问题。
还有一个问题,我应该从函数 multipartFormData.appendBodyPart
向 fileURL
参数输入什么?
应该是从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。如果您有带宽问题,这可能不是一个好的解决方案。
您似乎有三个问题需要解决。
- 使用
.POST
而不是 POST
。
fileURL
必须是指向文件系统上文件的有效 NSURL
。您不能只使用文件名。
- 您正在使用
responseString
序列化程序,但在闭包中将第三个参数命名为 JSON
。然后你让 result
进入 s
并试图打印出来。 result
参数根本不存在。相反,您应该 print(JSON)
.
希望这有助于澄清一些事情。
我已经看过
还有一个问题,我应该从函数 multipartFormData.appendBodyPart
向 fileURL
参数输入什么?
应该是从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。如果您有带宽问题,这可能不是一个好的解决方案。
您似乎有三个问题需要解决。
- 使用
.POST
而不是POST
。 fileURL
必须是指向文件系统上文件的有效NSURL
。您不能只使用文件名。- 您正在使用
responseString
序列化程序,但在闭包中将第三个参数命名为JSON
。然后你让result
进入s
并试图打印出来。result
参数根本不存在。相反,您应该print(JSON)
.
希望这有助于澄清一些事情。