文件上传的基础知识
来源:互联网 发布:ubuntu和linux的区别 编辑:程序博客网 时间:2024/05/23 15:06
//// HMViewController.m// 01-文件上传//#import "HMViewController.h"#define HMEncode(str) [str dataUsingEncoding:NSUTF8StringEncoding]@interface HMViewController ()@end@implementation HMViewController- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.}- (void)upload:(NSString *)name filename:(NSString *)filename mimeType:(NSString *)mimeType data:(NSData *)data parmas:(NSDictionary *)params{ // 文件上传 NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/upload"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.HTTPMethod = @"POST"; // 设置请求体 NSMutableData *body = [NSMutableData data]; /***************文件参数***************/ // 参数开始的标志 [body appendData:HMEncode(@"--heima\r\n")]; // name : 指定参数名(必须跟服务器端保持一致) // filename : 文件名 NSString *disposition = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", name, filename]; [body appendData:HMEncode(disposition)]; NSString *type = [NSString stringWithFormat:@"Content-Type: %@\r\n", mimeType]; [body appendData:HMEncode(type)]; [body appendData:HMEncode(@"\r\n")]; [body appendData:data]; [body appendData:HMEncode(@"\r\n")]; /***************普通参数***************/ [params enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { // 参数开始的标志 [body appendData:HMEncode(@"--heima\r\n")]; NSString *disposition = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n", key]; [body appendData:HMEncode(disposition)]; [body appendData:HMEncode(@"\r\n")]; [body appendData:HMEncode(obj)]; [body appendData:HMEncode(@"\r\n")]; }]; /***************参数结束***************/ // heima--\r\n [body appendData:HMEncode(@"--heima--\r\n")]; request.HTTPBody = body; // 设置请求头 // 请求体的长度 [request setValue:[NSString stringWithFormat:@"%zd", body.length] forHTTPHeaderField:@"Content-Length"]; // 声明这个POST请求是个文件上传 [request setValue:@"multipart/form-data; boundary=heima" forHTTPHeaderField:@"Content-Type"]; // 发送请求 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { if (data) { NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; NSLog(@"%@", dict); } else { NSLog(@"上传失败"); } }];}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // Socket 实现断点上传 //apache-tomcat-6.0.41/conf/web.xml 查找 文件的 mimeType// UIImage *image = [UIImage imageNamed:@"test"];// NSData *filedata = UIImagePNGRepresentation(image);// [self upload:@"file" filename:@"test.png" mimeType:@"image/png" data:filedata parmas:@{@"username" : @"123"}]; // 给本地文件发送一个请求 NSURL *fileurl = [[NSBundle mainBundle] URLForResource:@"itcast.txt" withExtension:nil]; NSURLRequest *request = [NSURLRequest requestWithURL:fileurl]; NSURLResponse *repsonse = nil; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&repsonse error:nil]; // 得到mimeType NSLog(@"%@", repsonse.MIMEType); [self upload:@"file" filename:@"itcast.txt" mimeType:repsonse.MIMEType data:data parmas:@{ @"username" : @"999", @"type" : @"XML"}];}@end
0 0
- 文件上传的基础知识
- Java Web基础知识之文件上传
- Wave文件的基础知识
- NIB文件的基础知识
- android基础知识----git上传改变上传的地址
- 【php网络 基础知识】详解get、post请求、文件上传
- 【Android基础知识】使用Http和HttpClient上传文件
- 【PHP基础知识】——文件上传相关知识
- Java Web基础知识之文件上传:文件上传一窥究竟
- Java Web基础知识之文件上传:文件上传一窥究竟
- Linux基础知识学习(二)----SZ/RZ命令讲解以及在secureCRT使用SFTP上传文件的讲解
- 有关 dll 文件的基础知识
- PHP基础知识文件的引入
- Struts的文件上传
- Struts的文件上传
- 关于文件的上传
- Struts的文件上传
- Struts的文件上传
- php函数【使用自定义函数库】
- Make Your Mark with Multi-level Marketing
- android手机连接问题adb not responding& compatible=NO, minSdk(API 9) > deviceSdk(API 1)}
- HttpClient3.x文件上传
- Java基础之break和continue
- 文件上传的基础知识
- 【设计模式】工厂方法模式
- Devu, the Singer and Churu, the Joker
- 策略模式
- Lisp一瞥:增强型变量Symbol
- POJ-3320Jessica's Reading Problem(尺取法)
- Tomcat整合配置Solr4.x
- 面向对象<1>__笔记(11)
- (java并发)CAS操作原理以及Atomic的原理