网络处理文件上传、获取文件MIMEType、其他HTTP请求方式
2013-10-01 18:33
405 查看
//文件上传底层原理分析 #pragma mark 文件上传 - (void)upload { NSURL *url = [NSURL URLWithString:@"http://192.168.1.106:8080/MJServer/upload"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.HTTPMethod = @"POST"; // 设置请求头信息-数据类型 [request setValue:@"multipart/form-data; boundary=mj" forHTTPHeaderField:@"Content-Type"]; // 拼接请求体 NSMutableData *data = [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 = UIImagePNGRepresentation(image); [data appendData:filedata]; [data appendData:Data(@"\r\n")]; // 参数结束的标识 [data appendData:Data(@"--mj--")]; // 设置请求体 request.HTTPBody = data; [[NSURLConnection connectionWithRequest:request delegate:nil] start]; }
#pragma mark 同步请求-获取文件的MIMEType - (void)getType { NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/yyh.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); }
#pragma mark 异步请求 - (void)post2 { NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/yyh.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]); }]; }
#pragma mark 每发送一段数据给服务器,就会调用这个方法。这个方法可以用来监听文件上传进度 - (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { }
相关文章推荐
- Setup Factory 7.0获取安装包名称、读取.ini文件名、注册ActiveX组件、创建快捷方式、HTTP请求
- apache commons fileupload 处理文件上传的两种方式(流式和非流式)
- android开发 使用HttpClient访问网络,post、get方式。注册、登陆、上传文件。
- jQuery Ajax 上传文件处理方式介绍
- spring mvc源码-》MultipartReques类-》主要是对文件上传进行的处理,在上传文件时,编码格式为enctype="multipart/form-data"格式,以二进制形式提交数据,提交方式为post方式。
- spring mvc 上传文件获取其他参数
- laravel之获取请求数据、cookie、文件上传处理
- 文件上传 通过隐藏iframe的方式来实现ajax上传文件并返回处理结果 ie乱码问题解决
- Android网络编程之Socket方式上传对象序列化文件(客户端)
- 以Sequence方式处理上传的文件(此处文件以图片为例)
- Servlet获取form表单上传文件及其他参数
- jfinal 对于multipart 文件域 上传时获取参数为空的处理
- IOS网络第五天 AFN-02-文件上传,底部弹出窗体,拍照和相册获取图片上传
- 针对不同浏览器预览上传文件的处理方式
- Servlet上传文件直接处理方式
- iframe实现无刷新上传文件并在当前页面返回数据php处理方式
- Servlet 通过表单上传文件和获取表单数据的最简单方式
- XML文件或者其他文件的源路径获取方式
- file上传文件的获取方式.txt
- 完美处理SpringMVC文件上传的一系列问题(无法获取参数、断点、分片等)