首页 > 代码库 > 文件上传

文件上传

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 = http://www.mamicode.com/[NSMutableData data];

    // 普通参数-username

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

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

    // 参数描述

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

    // 参数值

    [data appendData:Data(@"\r\n123456\r\n")];

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

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

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

    // 文件参数描述

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

    // 文件的MINETYPE

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

    // 文件内容

    [data appendData:Data(@"\r\n")];

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

    NSData *filedata = http://www.mamicode.com/UIImagePNGRepresentation(image);

    [data appendData:filedata];

    [data appendData:Data(@"\r\n")];

    // 参数结束的标识

    [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 = http://www.mamicode.com/[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]);

    }];

}