Rut*_*ans 3 iphone multipartform-data ios swift alamofire
我无法以正确的方式接近我提供的API,以便为我提供我正在寻找的响应.我一直在使用Swift和Alamofire,但这是我第一次使用multipart/form-data上传图像.我可以使用Postman上传图像,但我无法通过我的应用程序使用Alamofire框架发送相同的消息.
我的Swift代码:
func postFulfilWish(wish_id: Int, picture : UIImage, completionHandler: ((AnyObject?, ErrorType?) -> Void)) {
var urlPostFulfilWish = Constant.apiUrl;
urlPostFulfilWish += "/wishes/";
urlPostFulfilWish += String(wish_id);
urlPostFulfilWish += "/fulfill/images" ;
let image : NSData = UIImagePNGRepresentation(UIImage(named: "location.png")!)!
Alamofire.upload(.POST, urlPostFulfilWish, headers: Constant.headers, multipartFormData: { multipartFormData in
multipartFormData.appendBodyPart(data: image, name: "file")
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { response in
//This is where the code ends up now
//So it's able to encode my message into multipart/form-data but it's not doing it in the correct way for the API to handle it
debugPrint(response)
}
case .Failure(let encodingError):
print(encodingError)
}
}
)
}
Run Code Online (Sandbox Code Playgroud)
如果还没有回答,最近我使用Alamofire使用表单数据上传图像时遇到了同样的问题.
我能够使用Postman完全按照这篇文章中的内容上传图像,但是在我的应用程序中无法使用Alamofire.
您需要检查两件事,首先是服务器所期望的文件的名称,然后是用于在multipartFormData闭包中附加正文部分的方法.
这两种方法在我的情况下不起作用 -
multipartFormData.appendBodyPart(data: imageData, name: "file")
Run Code Online (Sandbox Code Playgroud)
这一个都没有
multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: name)
Run Code Online (Sandbox Code Playgroud)
但在这一个工作辉煌 -
multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "file.jpeg", mimeType: "image/jpeg")
Run Code Online (Sandbox Code Playgroud)
问题基本上是服务器找不到具有预期名称的文件.
我希望这可以帮助别人节省时间,想知道为什么它不起作用.
| 归档时间: |
|
| 查看次数: |
3598 次 |
| 最近记录: |