var carData:NSMutableDictionary = NSMutableDictionary();
var request:NSMutableURLRequest = NSMutableURLRequest();
        request.URL = NSURL(string: "YOUR URL ADDR");
        request.HTTPMethod = "POST";
        request.timeoutInterval = 10;
        var body:NSMutableData = NSMutableData();
        
        //设置表单分隔符
        var boundary:NSString = "----------------------1465789351321346";
        var contentType = NSString(format: "multipart/form-data;boundary=%@", boundary);
        request.addValue(contentType, forHTTPHeaderField: "Content-Type");
        
        //写入Info内容
        var keys:NSArray = carData.allKeys;
        for key in keys{
            body.appendData(NSString(format: "--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!);
            body.appendData(NSString(format: "Content-Disposition:form-data;name=\"%@\"\r\n\r\n", key as NSString).dataUsingEncoding(NSUTF8StringEncoding)!);
//如果有中文进行UTF8编码
            body.appendData("\(carData.objectForKey(key) as String)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
        }
        //写入图片内容
        var ImgPath = NSHomeDirectory()+(carData.valueForKey("imageSrc") as String);
        println(ImgPath)
        body.appendData(NSString(format: "--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!);
        body.appendData(NSString(format: "Content-Disposition:form-data;name=\"%@\";filename=\"\(ImgPath)\"\r\n", "userfile").dataUsingEncoding(NSUTF8StringEncoding)!);
        var imageData:NSData = UIImageJPEGRepresentation(UIImage(contentsOfFile: ImgPath), 1);
        body.appendData("Content-Type:image/jpeg\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
        body.appendData(imageData);
        body.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
        
        
        
        
        //写入尾部
        body.appendData(NSString(format: "--%@--\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!);
        request.HTTPBody = body;
        
        var urlResponse:NSHTTPURLResponse? = nil;
        var error:NSError? = NSError();

//第三方判断网络是否连接
        if IJReachability.isConnectedToNetwork() {
            NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue()) { (response, data, error) -> Void in
                if(error == nil){
                    var json:NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary;
                    dispatch_async(dispatch_get_main_queue(), {
                        loading.mode = MBProgressHUDMode.Text;
                        if(json["success"] != nil){

//MBProgressHUD提示插件
                            loading.mode = MBProgressHUDMode.CustomView;
                            loading.customView = UIImageView(image: UIImage(named: "37x-Checkmark"))
                            loading.labelText = "上传成功";
                        }else if(json["failed"] != nil){
                            loading.labelText = json["failed"] as String;
                        }
                        loading.hide(true, afterDelay: 1);
                       // println(json);
                    })
                }else{
                    dispatch_async(dispatch_get_main_queue(), {
                        loading.mode = MBProgressHUDMode.Text;
                        loading.labelText = error.localizedDescription;
                        loading.hide(true, afterDelay: 1);
                        println(error.localizedDescription);
                    })
                }
            }
        }else{
            loading.mode = MBProgressHUDMode.CustomView;
            loading.customView = UIImageView(image: UIImage(named: "Wrongmark"))
            loading.labelText = noNetworkMsg;
            loading.hide(true, afterDelay: 1);
        }

效果图:

转载本站文章请注明出处:爱代码 http://blog.vlian888.com/?p=105

另外的一些文章链接:http://www.cocoachina.com/bbs/read.php?tid-284255.html

http://www.360doc.com/content/15/0612/17/11417867_477671614.shtml

http://www.cnblogs.com/zhwl/archive/2013/01/04/2843788.html

完整的利用UIImagePickerController 选取图片并且上传的例子(Image upload example with Swift and PHP)  http://swiftdeveloperblog.com/image-upload-example/

swift文件上传及表单提交的更多相关文章

  1. ajax方式提交带文件上传的表单,上传后不跳转

    ajax方式提交带文件上传的表单 一般的表单都是通过ajax方式提交,所以碰到带文件上传的表单就比较麻烦.基本原理就是在页面增加一个隐藏iframe,然后通过ajax提交除文件之外的表单数据,在表单数 ...

  2. 基于Http原理实现Android的图片上传和表单提交

    版权声明:本文由张坤  原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/794875001483009140 来源:腾云阁  ...

  3. 如何用elementui去实现图片上传和表单提交,用axios的post方法

    下面是在vue搭建的脚手架项目中的组件component文件夹下面的upload.vue文件中的内容 <!--这个组件主要用来研究upload这个elementui的上传插件组件--> & ...

  4. 文件上传---form表单,ajax,jquery,以及iframe无刷新上传 (processData,contentType讲解)

    服务端程序: import tornado.web import os IMG_LIST=[] class IndexHandler(tornado.web.RequestHandler): def ...

  5. php 利用http上传协议(表单提交上传图片 )

    主要就是利用php 的 fsocketopen 消息传输. 这里先通过upload.html 文件提交,利用chrome抓包,可以看到几个关键的信息. 首先指定了表单类型为multipart/form ...

  6. 利用jquery.form.js实现将form提交转为ajax方式提交的方法(带上传的表单提交)

    提供一种方法就是利用jquery.form.js. (1)这个框架集合form提交.验证.上传的功能. 核心方法 -- ajaxForm() 和 ajaxSubmit() $('#myForm').a ...

  7. php文件上传 form表单形式

    1.php界面 <?php header( 'Content-Type:text/html;charset=utf-8 ');include_once("conn/conn.php&q ...

  8. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  9. struts2 文件的上传下载 表单的重复提交 自定义拦截器

    文件上传中表单的准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设 ...

随机推荐

  1. 在Xcode5和Android Studio添加工程间的依赖

    正在编辑中,尚未完成 先看看ios的target是什么,请先参看http://www.cocoachina.com/bbs/read.php?tid-10884.html做个大概了解 这里有一篇文章, ...

  2. phpmyadmin 主机名自动补全

    2015年2月9日 14:29:25 新安装的phpmyadmin在登录界面中, 主机名的输入框没有自动补全功能, 导致每次都得手动输入ip地址 找到 phpmyadmin/libraries/aut ...

  3. Java for LeetCode 168 Excel Sheet Column Title

    Given a positive integer, return its corresponding column title as appear in an Excel sheet. For exa ...

  4. 【USACO】ariprog

    输入 : N  M 要找到长度为 N 的等差数列,要求数列中每个数字都可以表达成 a^2 + b^2 的和, 数字大小不超过M^2 + M^2 输出: 等差数列首元素 间隔 (多组答案分行输出) 解题 ...

  5. [Android Pro] Android签名与认证详细分析之二(CERT.RSA剖析)

    转载自: http://www.thinksaas.cn/group/topic/335449/ http://blog.csdn.net/u010571535/article/details/899 ...

  6. ubuntu14.04安装与配置nginx服务器

    去年曾经配置过nginx服务器,可惜的是,几个月前因故障磁盘被格式化.今天又要用到nginx服务,所以从新配置了一番,但这次就不是那么顺利了.在此,愿与大家分享一下经验.只是简单的局域网应用,并未复杂 ...

  7. Vim的文件加密

    X----->(大写的X)是加密 取消文件密码:进入文件编辑模式 重复vim加密 只是输入密码时为空(直接回车)--->:w ~ Warning: Using a weak encrypt ...

  8. jQuery信息提示工具jquery.poshytip (转载)

    转载地址:http://www.helloweba.com/view-blog-123.html Poshy Tip是一款非常友好的信息提示工具,它基于jQuery,当鼠标滑向链接时,会出现一个信息提 ...

  9. 理解ASP.NET 5的中间件

    今天推荐的这篇文章,讲述了如何实现和使用ASP.NET 5的中间件. 虽然在ASP.NET 5中,微软没有再强调OWIN(Open Web Interface for .NET)及其微软官方的OWIN ...

  10. SQL Server2008跟SQL Server2008R2的区别(转)

    QL Server 2008 R2基于SQL Server 2008提供可靠高效的智能数据平台构建而成,SQL Server 2008 R2 提供了大量新改进,可帮助您的组织满怀信心地调整规模.提高 ...