我有这个有效的命令:
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,但我仍然无法让它工作。我很困惑我做错了什么,如果有人知道正确的方法。
答案 0 :(得分:1)
主要问题是,如果不首先将图像数据编码为多部分表单数据,则无法直接在HTTPBody中发布图像数据。一个很好的解释是the RFC
中创建了一个简单的框架来执行此操作基础知识是,在将其作为正文发送之前,需要按照RFC对其进行编码。