我有这个有效的命令:
curl -X POST -H -i -F userPic=@/Users/path/to/image.png http://server.com/users/userPic/6
我正在用Swift编写程序,并且试图获得相同的命令将一些带有POST请求的图像数据发送到我的服务器。我很困惑如何将请求的“userPic = @”部分添加到我的请求中。目前,我的Swift代码如下:
func sendUserPicToAPI() {
if let savedId = defaults.stringForKey("UserId") {
userId = savedId.toInt()
}
var imageData = UIImagePNGRepresentation(profPic.image)
var url = NSURL(string: "http://server.com/users/userPic/\(userId)")
var request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
request.HTTPBody = NSData(data: imageData!)
var response: NSURLResponse? = nil
var error: NSError? = nil
let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)
let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
println("API Response: \(results)")
}
我引用了这个stackoverflow post,但是我仍然无法使其工作。我很困惑我做错了什么,如果有人知道正确的解决方法。
最佳答案
主要问题在于,如果不先将图像数据编码为多部分表单数据,就不能直接在HTTPBody中发布图像数据。 the RFC中有一个很好的解释
我在Swift on github中创建了一个简单的框架来执行此操作
基本要求是,在将其作为正文发送之前,需要按照RFC对其进行编码。
关于ios - 如何将Curl转换为iOS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30747509/