swift文件上传及表单提交

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/

时间: 2024-08-09 06:19:00

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

springmvc文件上传及表单数据封装

补充: form表单需要提交时间,springmvc封装到实体类的Date字段时,丢失时分秒,可以在controller中添加     @InitBinder     public void initBinder(WebDataBinder binder) {         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");         dateFormat.setLenient(f

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

版权声明:本文由张坤  原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/794875001483009140 来源:腾云阁 https://www.qcloud.com/community 现在服务器主要是Web居多,客户端一般通过http上传文件到web服务器,最开始的设想很简单,直接将图片转化为字节流,写入到http的outstream,随后发送出去即可. 但当这种方法出现问题,服务器根据文件名这个表单中的字段来判定

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

主要就是利用php 的 fsocketopen 消息传输. 这里先通过upload.html 文件提交,利用chrome抓包,可以看到几个关键的信息. 首先指定了表单类型为multipart/form-data;. boundary是分隔符 因为上传文件不在使用原有的http协议了.请求内容不再可能以 x = y方式发送了.而使用了 分隔符 字段内容 分隔符号 字段内容2 而boundary就是指定分隔符号的标志. 请求的内容就应该是这样的了. 在来看下消息体 #socket_upload.ph

记一种有图片上传的表单提交

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>动态加载下拉框中的类别_文件上传_添加商品</title

文件上传(表单文件上传)

文件上传是开发一个网站最基本的一个需求功能 前台页面的设置: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerNa

c# 模拟提交带文件上传的表单

------WebKitFormBoundary8gsfyexbIoO5OYAa Content-Disposition: form-data; name="username" admin ------WebKitFormBoundary8gsfyexbIoO5OYAa Content-Disposition: form-data; name="submit" 登录 ------WebKitFormBoundary8gsfyexbIoO5OYAa Content-D

代码模拟带文件上传的表单

使用的是Apache httpcomponents 相关的maven依赖jar包如下 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.4-alpha1</version> </dependency> <dependency><!--必

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

文件上传中表单的准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置为 post 需添加 <input type=“file”> 字段. Struts 对文件上传的支持 在 Struts 应用程序里, FileUpload 拦截器和 Jakarta Commons FileUpload 组件可以完成文件的上传. 步骤:1. 在 Jsp 页面的文件上传表单里使用

文件的上传(表单上传和ajax文件异步上传)

一.表单上传: html客户端部分: <form action="upload.ashx" method="post" enctype="multipart/form-data"> 选择文件:<input type="file" name="file1" /><br /> <input type="submit" value="上传&q