美文网首页
OC网络:文件上传

OC网络:文件上传

作者: cyh老崔 | 来源:发表于2015-12-10 20:17 被阅读449次

其中KFileBoundary的名称可以自定义.


#define KFileBoundary @"fanlu"
#define KNewLine @"\r\n"
#define KEncode(str) [str dataUsingEncoding:NSUTF8StringEncoding]


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self upload];
}

//基本构成为两个参数:文件参数与用户名参数.每个参数配置时的规则:先配置文件信息,再配置具体数据.
/*
 参数1
 参数2
 结束标记
 */

/*
 * 文件参数 :1.配置文件信息 2.配置具体文件数据
 fanlu
 Content-Disposition: form-data; name="参数名"; filename="文件名"
 Content-Type: 文件类型(MIMEType)
 
 文件具体数据
 
 * 非文件参数: 1.配置参数信息 2.配置具体参数值
 fanlu
 Content-Disposition: form-data; name="参数名"
 
 参数值
 */

- (void)upload
{
    // 1.请求路径
    NSURL *url = [NSURL URLWithString:@"http://192.168.15.172:8080/Server/upload"];
    
    // 2.创建一个POST请求
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    request.HTTPMethod = @"POST";
    
    // 3.设置请求体
    NSMutableData *body = [NSMutableData data];
    
    // 3.1.文件参数
    [body appendData:KEncode(@"--")];
    [body appendData:KEncode(KFileBoundary)];
    [body appendData:KEncode(KNewLine)];
    
    [body appendData:KEncode(@"Content-Disposition: form-data; name=\"file\"; filename=\"test123.png\"")];
    [body appendData:KEncode(KNewLine)];
    
    [body appendData:KEncode(@"Content-Type: image/png")];
    [body appendData:KEncode(KNewLine)];
    
    [body appendData:KEncode(KNewLine)];
    UIImage *image = [UIImage imageNamed:@"minion_03"];
    NSData *imageData = UIImagePNGRepresentation(image);
    [body appendData:imageData];
    [body appendData:KEncode(KNewLine)];
    
    // 3.2.用户名参数
    [body appendData:KEncode(@"--")];
    [body appendData:KEncode(KFileBoundary)];
    [body appendData:KEncode(KNewLine)];
    
    //直接复制上述字符串,将filename及类型去掉.因为不是文件参数,所以不需要filename及类型
    [body appendData:KEncode(@"Content-Disposition: form-data; name=\"username\"")];
    [body appendData:KEncode(KNewLine)];
    
    [body appendData:KEncode(KNewLine)];
    [body appendData:KEncode(@"张三")];
    [body appendData:KEncode(KNewLine)];
    
    // 3.3.结束标记
    [body appendData:KEncode(@"--")];
    [body appendData:KEncode(KFileBoundary)];
    [body appendData:KEncode(@"--")];
    [body appendData:KEncode(KNewLine)];
    
    request.HTTPBody = body;
    
    // 4.设置请求头(告诉服务器这次传给你的是文件数据,告诉服务器现在发送的是一个文件上传请求)
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", KFileBoundary];
    [request setValue:contentType forHTTPHeaderField:@"Content-Type"];
    
    // 5.发送请求
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
        NSLog(@"%@", dict);
    }];
}

相关文章

  • OC网络:文件上传

    其中KFileBoundary的名称可以自定义.

  • Swift中文件和图片上传处理

    前言:基于Alamofire4.5网络框架开发的Swift项目中上传文件和图片代码参考。 上传文件 图片上传 OC...

  • AFNetworking 3.X 简单使用

    一、网络请求: GET方式: POST方式: 二、文件上传: 通过工程中的文件上传 根据URL路径上传 三、文件下...

  • Servlet——upload

    一、文件上传的概述   用户将本地文件通过网络上传至服务器的过程。可以用于图片发送、上传简历等。 1、文件上传技术...

  • Retrofit文件上传和文件下载

    项目中使用了Retrofit2 网络框架,对Retrofit的文件上传和下载进行记录。 文件上传 文件上传 一般采...

  • Web 基础26 文件上传概述及其入门案例

    1.1 文件上传概述 文件上传用户将本地文件通过网络上传至服务器的过程 应用场景相亲网站的照片上传招聘网站的简历上...

  • 文件上传漏洞

    文件上传漏洞原理文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶...

  • 2018-08-10 web渗透(完)

    今天主要学习的是文件上传漏洞和xss漏洞 文件上传漏洞 【漏洞描述】 文件上传漏洞是指网络攻击者上传了一个可执行的...

  • 文件上传

    一、 导入 回忆学过的网络请求:OkHttp(基本步骤)、Retrofit。上传文件接口讲解 二、上传文件 1. ...

  • [IOS 多线程 & 网络 - 2.5] – 小文件上传

    转载:[IOS 多线程 & 网络 - 2.5] – 小文件上传 A.文件上传 思路: 发送文件数据给服务器 使用p...

网友评论

      本文标题:OC网络:文件上传

      本文链接:https://www.haomeiwen.com/subject/ncdyhttx.html