在SWIFT中上传具有其他参数的图像

编程入门 行业动态 更新时间:2024-10-22 20:41:18
本文介绍了在SWIFT中上传具有其他参数的图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我想使用SWIFT使用其他参数将图像上传到服务器,并且服务器端脚本在PHP中.我将请求发布到 www.23look/merchant/verify 接受以下参数:

I want to upload image to server with other parameters using SWIFT and the server side script is in PHP. I'm posting the request to www.23look/merchant/verify which accepts following parameters:

mer_name-字符串

mer_name - String

mer_tel-字符串

mer_tel - String

mer_address-字符串

mer_address - string

lng-字符串

lat-字符串

mer_licence-文件类型

mer_licence - file type

令牌-字符串

mer_type-字符串

mer_type - string

每当我发出HTTP发布请求时,它总是在响应中返回0值,这意味着系统错误".也许我做错了什么,有人可以帮我看看我的代码吗?

Whenever I make HTTP post request, it always returns 0 value in response, which means "System Error". Maybe there's something wrong I'm doing, can someone please help me see my code?

func uploadImage() { let postPictureUrl = NSURL(string: "www.23look/merchant/verify") let request = NSMutableURLRequest(URL: postPictureUrl!) request.HTTPMethod="POST" let param=[ "mer_name" : shopNameUITF.text!, "mer_tel" : shopTelephoneUITF.text!, "mer_address" : shopAddressUITF.text!, "lat" : "39.6892", "lng" : "115.9239", "token": KeychainWrapper.stringForKey("tokenValue")!, "mer_type": "smalll" ] let abc = KeychainWrapper.stringForKey("tokenValue")! let boundary = generateBoundaryString() request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") let imageData = UIImageJPEGRepresentation(myImageView.image!, 0.1) if imageData==nil { print("image data is nil"); return } request.HTTPBody = createBodyWithParameters(param, filePathKey: "mer_license", imageDataKey: imageData!, boundary: boundary) let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in if error != nil { print("error=\(error)") return } //You can print out response object print("***** response = \(response)") // Print out reponse body let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) print("**** response data = \(responseString!)") do { let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary dispatch_async(dispatch_get_main_queue(), { print(NSString(data: data!, encoding:NSUTF8StringEncoding)!) print(json) }) } catch let err { print(err) } } task.resume() } func generateBoundaryString() -> String { return "Boundary-\(NSUUID().UUIDString)" } func createBodyWithParameters(parameters:[String:String]?, filePathKey: String?, imageDataKey:NSData, boundary: String) -> NSData { var body=NSMutableData() if parameters != nil { for(key, value) in parameters! { body.appendString("--\(boundary)\r\n") body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n") body.appendString("\(value)\r\n") } } let filename = "user-profile.jpg" let mimetype = "image/jpg" body.appendString("--\(boundary)\r\n") body.appendString("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n") body.appendString("Content Type: \(mimetype)\r\n\r\n") body.appendData(imageDataKey) body.appendString("\r\n") body.appendString("--\(boundary)--\r\n") return body } extension NSMutableData { func appendString(string: String) { let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) appendData(data!) }

推荐答案

如果使用appendData而不是appendString进行操作怎么办:

what if you do it with an appendData instead of appendString:

let body = NSMutableData() let tempData = NSMutableData() for (key, value) in parameters { tempData.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) tempData.appendData("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) tempData.appendData("\(value!)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) // etc etc } body.appendData(tempData) request.setValue("\(body.length)", forHTTPHeaderField: "Content-Length") request.HTTPBody = body

更多推荐

在SWIFT中上传具有其他参数的图像

本文发布于:2023-11-26 17:53:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1634582.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图像   参数   上传   SWIFT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!