您的位置:首页 > 移动开发 > Swift

<Swift>iOS实现单张图片混带其他参数共同上传

2016-01-14 21:59 525 查看
学生党还是比较懒,好久没写博客了,当然不是因为不码代码了,项目还在继续做,总之就是懒,休息时间就想干别的了。今天终于又写了。 场景是这样的,公司的项目要上传一个图片,和关于这个图片的描述(String类型)以及这个图片的ID(Int)类型。后台给了一个接口上传这些数据。之前这个功能做的时候是三个接口,分别接收这三个参数。下面贴代码。func postPicture(paramer:NSDictionary,fileData:NSData,fileName:NSString){
<span style="white-space:pre">	</span>//第一个参数是存储id和描述的一个字典  第二个参数是一个图片的NSData形式 第三个参数是图片名称
        var url = "http://your url"//根据url 初始化requsetlet request = NSMutableURLRequest(URL:NSURL(string: url)!)let Boundary:NSString = "*****"//分界线let MPBoundary = NSString(format:"--%@",Boundary)//结束符var EndBoundary = NSString(format:"%@--",MPBoundary)let body = NSMutableString()let requestData = NSMutableData()<span style="white-space:pre">	</span>//拼接第一个参数body.appendFormat("%@\r\n",MPBoundary)
<span style="white-space:pre">	</span>//name后是字典的key 也就是服务器接口的接收键值body.appendFormat("Content-Disposition: form-data; name=\"page_id\"\r\n\r\n")body.appendFormat("\(paramer["page_id"] as! NSInteger)\r\n") 
<span style="white-space:pre">	</span>//拼接第二个参数body.appendFormat("%@\r\n",MPBoundary)body.appendFormat("Content-Disposition: form-data; name=\"page_desc\"\r\n\r\n")body.appendFormat("\(paramer["page_desc"] as! NSString)\r\n")//拼接图片body.appendFormat("%@\r\n",MPBoundary)body.appendString("Content-Disposition: form-data; name=\"error_pic\";filename=\"\(fileName)\"\r\n")
<span style="white-space:pre">	</span>//图片类型body.appendString("Content-Type: image/png\r\n\r\n")EndBoundary = NSString(format: "\r\n%@\r\n", EndBoundary)requestData.appendData(body.dataUsingEncoding(NSUTF8StringEncoding)!)requestData.appendData(fileData)requestData.appendData(EndBoundary.dataUsingEncoding(NSUTF8StringEncoding)!)<span style="white-space:pre">	</span>//请求方式request.HTTPMethod = "POST"request.setValue("multipart/form-data; boundary=\"*****\"; charset=\"UTF-8\"", forHTTPHeaderField: "Content-Type")request.setValue("\(requestData.length)", forHTTPHeaderField: "Content-Length")request.HTTPBody = requestDatalet session = Manager.sharedInstance.sessionlet task = session.dataTaskWithRequest(request) { (data, response, error) -> Void indo {if data != nil {let httpResponse = response as! NSHTTPURLResponseif httpResponse.statusCode == 200 {let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
<span style="white-space:pre">			</span>//此处不同后台返回值不同let status = json.objectForKey("code") as! Stringif status == "0000" {//上传成功}}}else{}}catch {return}}task.resume()}
功能实现了。我是参照前辈用OC写的写法,有什么不足欢迎指正。附OC的地址:http://blog.sina.com.cn/s/blog_a573f7990101fdm7.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: