Swift-网络上传请求之Multipart
2016-04-16 16:42
417 查看
版权所有,请勿转载!
项目中需要完成图片的上传,用于头像和帖子内容的丰富,直接贴代码和注释备忘:
func uploadImg(img:UIImage,urldomain:String,success:(num:Int,ok:Bool,String)->Void) { let picurl = "接受图片的url地址" //图片data(这里我进行了压缩,可以省略) let PicData = UIImageJPEGRepresentation(img, 0.5) //这里是headers let pichead = ["Host":"\(urldomain):8080", "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Origin":"http://\(urldomain):8080", "Content-Type":"multipart/form-data; boundary=----WebKitFormBoundaryh4V4mNJ7hB0dOlYA", "Referer":"引用地址", "Cookie":"所持的cookies"] //这里是body部分 let plain = DBManager.shareInstance().AutoUUID() let encrypt = DataEncoding.Endcode_AES_ECB(plain) Alamofire.upload(.POST, picurl, headers: pichead, multipartFormData: { (MultipartFormData) -> Void in //将准备好的body数据添加到MultiPart MultipartFormData.appendBodyPart(data: plain.dataUsingEncoding(NSUTF8StringEncoding)!, name: "plain") MultipartFormData.appendBodyPart(data: encrypt.dataUsingEncoding(NSUTF8StringEncoding)!, name: "encrypt") //将图片数据装入Multipart 上传流 MultipartFormData.appendBodyPart(stream: NSInputStream.init(data: PicData!), length: UInt64((PicData?.arrayOfBytes().count)!), name: "pic", fileName: "\(img.description).jpg", mimeType: "image/jpeg") }, encodingMemoryThreshold: 100) { (Result:Manager.MultipartFormDataEncodingResult) -> Void in switch Result { case .Success( let request, let streamingFromDisk, let streamFileURL): request.responseJSON(completionHandler: { (response:Response<AnyObject, NSError>) -> Void in let str = String(data: response.data!, encoding: NSUTF8StringEncoding) print("-----上传图片界面----------------") let json = JSON.init(data: response.data!) print("json ------------\(json)") if json["flag"].boolValue == true { let content = json["content"] let imgurl = "http://\(urldomain):8080/MISSPicPro\(content)" print(imgurl) success(num: Global_Send_num,ok: true,imgurl) } else { //失败传空 success(num: Global_Send_num,ok: false,"") } }) break case .Failure(let Error): //失败传空 success(num:Global_Send_num,ok: false,"") break default: break } } }
相关文章推荐
- The type org.springframework.http.converter.HttpMessageConverter cannot be resolved. It is indirectl
- android获取网络图片的用法 BitmapFactory.decodeByteArray 返回null
- python中socket【TCP】基本编程知识
- 从底层看看HTTP模块的构建之net模块深入理解
- Linux Android 多点触摸协议 原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/os/71/12306571.shtml
- Linux Android 多点触摸协议 原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/os/71/12306571.shtml
- 《TCP/IP具体解释卷2:实现》笔记--ICMP:Internet控制报文协议
- UVA 1349 Optimal Bus Route Design(网络流)
- 网络流二十四题之二 —— 太空飞行计划问题(SHUT)
- 安卓与HTTPS
- HttpServletResponse 和 HttpServletRequest的应用场景
- 网络的介数中心性(betweenness)及计算方法
- iOS应用访问不了网络的解决方法 App Transport Security has blocked a cleartext HTTP
- HttpClient 教程
- 网络:YYModel 使用(JSON到模型的转换)
- 网络:RSA 加密
- 网络:对称加密
- 网络:自定义模型转 JSON
- hdu4971A simple brute force problem[【网络流最大流】
- 南邮第八届程序设计竞赛之网络预选赛小结 一(错题集)