我在向我的服务器发送相同的发布请求中的文本和图像时遇到了一些麻烦。我认为这个问题与我设定边界的方式有关。NSURLSession多部分/表单数据发布请求时遇到问题
即时通讯使用Swift与ios9。
我也跟着说明这里ios Upload Image and Text using HTTP POST 尽我所能,给OBJ-C转换成快捷
然而,当我张贴到我的服务器发出请求,每当我试图访问后的数据,如$ _ POST [“键“]我得到一个未定义的索引错误。下面是我用它来设置HTTP请求,任何人都可以找到这个错误代码:
func sendRegisterRequest(params:Dictionary<String, String>, withImage image: UIImage) {
// https://stackoverflow.com/questions/8564833/ios-upload-image-and-text-using-http-post
let url = NSURL(string: "MY_URL");
let request = NSMutableURLRequest(URL: url!)
// the boundary string : a random string, that will not repeat in post data, to separate post data fields.
let boundaryConstant = "----------V2ymHFg03ehbqgZCaKO6jy--";
// string constant for the post parameter 'file'. My server uses this name: `file`. Your's may differ
let fileParamConstant = "file";
request.HTTPMethod = "POST"
request.setValue("multipart/form-data; boundary=\(boundaryConstant)", forHTTPHeaderField: "Content-Type")
// post body
let body = NSMutableData();
// add params (all params are strings)
for (key, value) in params {
body.appendData("\(boundaryConstant)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!);
body.appendData("Content-Disposition: form-data; name=\"\(key.stringByAddingPercentEncodingWithAllowedCharacters(.symbolCharacterSet())!)\"\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!);
body.appendData("\(value.stringByAddingPercentEncodingWithAllowedCharacters(.symbolCharacterSet())!)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!);
}
//print(body);
// add image data
let imageData = UIImageJPEGRepresentation(image, 1.0);
body.appendData("\(boundaryConstant)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!);
body.appendData("Content-Disposition: form-data; name=\"\(fileParamConstant)\"; filename=\"image\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!);
body.appendData("Content-Type: image/jpeg\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!);
body.appendData(imageData!);
body.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!);
body.appendData("\(boundaryConstant)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!);
request.HTTPBody = body;
你可以检查这个答案 http://stackoverflow.com/questions/26162616/upload-image-with-parameters-in-swift/26163136#26163136 –