<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
相关文章推荐
- Swift百万线程攻破单例(Singleton)模式
- Get Local IP Address in Swift
- swift常用字符串处理
- swift常用字符串处理
- CollectionView实现瀑布流(swift)
- Swift语言教程中文文档
- Swift 学习 用 swift 调用 oc
- swift for、for-in循环
- Swift iOS项目最佳实践汇总
- iOS_Swift之UICollectionView详解
- Swift-04-Designated&&Convenience
- swift_多线程基础_最简单用法(GCD, NSOperationQueue, NSThread)
- swift-03-构造器(Designated&&Convenience)
- Swift 变量与常量
- Swift之UITableView的增删以及三种逆向传值方式
- Swift 编程语言入门教程
- Swift - 使用NSURL进行数据的提交和获取(POST与GET)
- 苹果Swift语言中文简明教程
- IOS反射,swift反射,基础 MODEL转字典,字典转MODEL,根据下面的自己进行拓展
- swift中对AFNetWorking的简单封装