• Form-based File Upload in HTML(RFC-1867)


    1.

    RootViewController.m

    #import "RootViewController.h"
    #define URL @"http://localhost:8080/TestOne/upload3.jsp"
    
    @implementation RootViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = CGRectMake(100, 100, 100, 50);
        [button setTitle:@"发送图片" forState:0];
        button.backgroundColor = [UIColor groupTableViewBackgroundColor];
        [self.view addSubview:button];
        [button addTarget:self action:@selector(postImageAction:) forControlEvents:7];
    }
    
    -(void)postImageAction:(UIButton *)sender
    {
        //分界线的标示符,用于区分每一条
        NSString *TWITTERFO_FORM_BOUNDARY = @"AaB03x";
    
        //根据url初始化request
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:
                                         [NSURL URLWithString:URL]
                                                                cachePolicy:NSURLRequestReloadIgnoringCacheData
                                                           timeoutInterval:10];
        //分界线 --AaB03x
        NSString *MPboundary = 
        [[NSString alloc] initWithFormat:@"--%@",TWITTERFO_FORM_BOUNDARY];
        //结束符AaB03x--
        NSString *endMPboundary = [[NSString alloc]initWithFormat:@"%@--",MPboundary];
        //字典存多少张图片
        NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:[UIImage imageNamed:@"163.png"],@"File1",@"huen",@"user",nil];
        //要上传图片
        UIImage *image = [params objectForKey:@"File1"];
        NSData *data = UIImagePNGRepresentation(image);
        //http body 的字符串
        NSMutableString *body = [[NSMutableString alloc]init];
        //参数的所有key的
        NSArray *keys = [params allKeys];
        for (int i = 0; i < [params count]; i++)
        {
            //得到当前key
            NSString *key = [keys objectAtIndex:i];
            //如果key不是图片类型
            if (![key isEqualToString:@"File1"])
            {
                //添加分界线,换行
                [body appendFormat:@"%@
    ",MPboundary];
                //添加字段名称,换2行
                [body appendFormat:@"Content-Disposition:form-data;name="%@"
    
    ",key];
                //添加字段的值
                [body appendFormat:@"%@
    ",[params objectForKey:key]];
            }
        }
        ///////////////////////////////传图////////////////////////////////////////////////
        //添加分界线换行
        [body appendFormat:@"%@
    ",MPboundary];
        //给据heml控件neme的值声明File1字段,文件名为163.png
        [body appendFormat:@"Content-Disposition:form-data;name="File1";filename="163.png"
    "];
        //声明上传文件的格式
        [body appendFormat:@"Content-Type:image/png
    
    "];
        //声明结束符
        NSString *end = [[NSString alloc]initWithFormat:@"
    %@",endMPboundary];
        ///////////////////////////////////////////////////////////////////////////////////
        //声明myRequestData,用来放入http body
        NSMutableData *myRequestData = [NSMutableData data];
        //将body字符串转化为UTF-8
        [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
        //将image加入data
        [myRequestData appendData:data];
        //加入结束符--AaB03x--
        [myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
        ///////////////////////////////设置Content////////////////////////////////////////
        //设置httpHeader中Content-Type的值
        NSString *content = [[NSString alloc]initWithFormat:@"multipart/form-data;boundary=%@",TWITTERFO_FORM_BOUNDARY];
        //设置HttpHeader
        [request setValue:content forHTTPHeaderField:@"Content-Type"];
        //设置Content-Length
        [request setValue:[NSString stringWithFormat:@"%d",[myRequestData length]] forHTTPHeaderField:@"Content-Length"];
        //设置Http body
        [request setHTTPBody:myRequestData];
        //http Method
        [request setHTTPMethod:@"POST"];
        
        NSError * err;
        NSHTTPURLResponse * response;
        NSData *urlData = [NSURLConnection sendSynchronousRequest:request
                                                returningResponse:&response
                                                            error:&err];
    
        NSString * responseStr = [[NSString alloc] initWithData:urlData
                                                       encoding:NSUTF8StringEncoding];
        NSLog(@"responseStr = %@",responseStr);
        // 打印回应和错误信息
        NSLog(@"response = %@",[NSHTTPURLResponse localizedStringForStatusCode:[response statusCode]]);
    }
    
    @end

     .

     

    rfc-3920:xmpp

  • 相关阅读:
    this和e.target的异同
    onmouseover和onmouseenter区别
    jquery带参插件函数的编写
    让bind函数支持IE8浏览器的方法
    LeetCode #9 Palindrome Number
    LeetCode #7 Reverse Integer
    LeetCode #1 Two Sum
    iOS 真机测试错误“The application bundle does not contain a valid identifier”
    Swift、Objective-C 单例模式 (Singleton)
    iOS 相册和网络图片的存取
  • 原文地址:https://www.cnblogs.com/huen/p/3700011.html
Copyright © 2020-2023  润新知