zoukankan      html  css  js  c++  java
  • 文件上传

    1、    文件的上传完整用例代码:

    #pragma mark 文件上传

    - (void)upload {

        NSURL *url = [NSURL URLWithString:@"http://192.168.1.106:8080/MJServer/upload"];

        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

        request.HTTPMethod = @"POST";

        // 设置请求头信息-数据类型,boundary--分割线

        [request setValue:@"multipart/form-data; boundary=mj" forHTTPHeaderField:@"Content-Type"];

        // 拼接请求体

        NSMutableData *data = [NSMutableData data];

        // 普通参数-username

        // 普通参数开始的一个标记

        [data appendData:Data(@"--mj ")];

        // 参数描述

        [data appendData:Data(@"Content-Disposition:form-data; name="username" ")];

        // 参数值

        [data appendData:Data(@" 123456 ")];

        // 文件参数-file--要跟服务器上的一样

        // 文件参数开始的一个标记

        [data appendData:Data(@"--mj ")];

        // 文件参数描述

        [data appendData:Data(@"Content-Disposition:form-data; name="file"; filename="img.png" ")];

        // 文件的MINETYPE

        [data appendData:Data(@"Content-Type:image/png ")];

        // 文件内容

        [data appendData:Data(@" ")];

        UIImage *image = [UIImage imageNamed:@"Default.png"];

        NSData *filedata = UIImagePNGRepresentation(image);

        [data appendData:filedata];

        [data appendData:Data(@" ")];

        // 参数结束的标识

        [data appendData:Data(@"--mj--")];

        // 设置请求体

        request.HTTPBody = data;

           [[NSURLConnection connectionWithRequest:request delegate:nil] start];

    }

    2、    文件maintype的获取

     方法一:

    #pragma mark 同步请求-获取文件的MIMEType

    - (void)getType {

    //本地文件路径

    NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/备课.txt"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    //发送一个同步请求

    NSURLResponse *response = nil;

    //发送一个同步请求。快速

    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];

    NSString *type = [response MIMEType];

    NSString *str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];

    NSLog(@"%@", str);

    NSLog(@"%@", type);

    }

    方法2:利用block发送异步请求,NSURLConnection放在NSOperationqueue队列里面执行操作

    #pragma mark 异步请求

    - (void)post2 {

        // 文件本地地址

        NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/备课.txt"];

        // 发送请求

        NSURLRequest *request = [NSURLRequest requestWithURL:url];

        // 这个操作队列是用来执行Block的

        NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];

        // 发送异步请求

        [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:

         // 请求结束后会回调这个Block

         ^(NSURLResponse *response, NSData *data, NSError *error) {

             NSString *str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];

             NSLog(@"%@", str);

             NSLog(@"%@", [response MIMEType]);

        }];

    }

  • 相关阅读:
    CH和CN图标去除及语言栏变短
    vim命令学习总结
    《Applications=Code+Markup》读书札记(2)——创建一个简单的 WPF 程序的代码结构及关于 Window 实例位置设置问题
    linux 开机时自动挂载分区
    Windows/linux双系统的时间修改问题
    关于RHEL6.1你可能想知道的那点事
    C语言的重要概念
    sprintf你知道多少
    《Applications=Code+Markup》读书札记(1)——一个简单的 WPF 程序
    Linux命令——tar
  • 原文地址:https://www.cnblogs.com/angongIT/p/3832713.html
Copyright © 2011-2022 走看看