源码0602-10-掌握-文件上传11-了解-获得文件的MIMEType
2017-03-23 17:45
302 查看
// // ViewController.m // 10-掌握-文件上传 #define XMGBoundary @"520it" #define XMGEncode(string) [string dataUsingEncoding:NSUTF8StringEncoding] #define XMGNewLine [@"\r\n" dataUsingEncoding:NSUTF8StringEncoding] #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // 创建请求 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/upload"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.HTTPMethod = @"POST"; // 设置请求头(告诉告诉服务器,这是一个文件上传的请求) [request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", XMGBoundary] forHTTPHeaderField:@"Content-Type"]; // 设置请求体 NSMutableData *body = [NSMutableData data]; // 文件参数 /* --分割线\r\n Content-Disposition: form-data; name="参数名"; filename="文件名"\r\n Content-Type: 文件的MIMEType\r\n \r\n 文件数据 \r\n */ // 分割线 [body appendData:XMGEncode(@"--")]; [body appendData:XMGEncode(XMGBoundary)]; [body appendData:XMGNewLine]; // 文件参数名 [body appendData:XMGEncode([NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file\"; filename=\"test.png\""])]; [body appendData:XMGNewLine]; // 文件的类型 [body appendData:XMGEncode([NSString stringWithFormat:@"Content-Type: image/png"])]; [body appendData:XMGNewLine]; // 文件数据 [body appendData:XMGNewLine]; // UIImageJPEGRepresentation(<#UIImage *image#>, <#CGFloat compressionQuality#>) UIImage *image = [UIImage imageNamed:@"placeholder"]; [body appendData:UIImagePNGRepresentation(image)]; // [body appendData:[NSData dataWithContentsOfFile:@"/Users/xiaomage/Desktop/test.png"]]; [body appendData:XMGNewLine]; // 非文件参数 /* --分割线\r\n Content-Disposition: form-data; name="参数名"\r\n \r\n 参数值 \r\n */ // 分割线 [body appendData:XMGEncode(@"--")]; [body appendData:XMGEncode(XMGBoundary)]; [body appendData:XMGNewLine]; // 参数名 [body appendData:XMGEncode([NSString stringWithFormat:@"Content-Disposition: form-data; name=\"username\""])]; [body appendData:XMGNewLine]; // 参数值 [body appendData:XMGNewLine]; [body appendData:XMGEncode(@"jack")]; [body appendData:XMGNewLine]; // 结束标记 /* --分割线--\r\n */ [body appendData:XMGEncode(@"--")]; [body appendData:XMGEncode(XMGBoundary)]; [body appendData:XMGEncode(@"--")]; [body appendData:XMGNewLine]; request.HTTPBody = body; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { NSLog(@"%@", [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]); }]; } @end
// // NSDictionary+Log.m // 05-掌握-多值参数 #import <Foundation/Foundation.h> @implementation NSDictionary (Log) - (NSString *)descriptionWithLocale:(id)locale { NSMutableString *string = [NSMutableString string]; // 开头有个{ [string appendString:@"{\n"]; // 遍历所有的键值对 [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { [string appendFormat:@"\t%@", key]; [string appendString:@" : "]; [string appendFormat:@"%@,\n", obj]; }]; // 结尾有个} [string appendString:@"}"]; // 查找最后一个逗号 NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch]; if (range.location != NSNotFound) [string deleteCharactersInRange:range]; return string; } @end @implementation NSArray (Log) - (NSString *)descriptionWithLocale:(id)locale { NSMutableString *string = [NSMutableString string]; // 开头有个[ [string appendString:@"[\n"]; // 遍历所有的元素 [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [string appendFormat:@"\t%@,\n", obj]; }]; // 结尾有个] [string appendString:@"]"]; // 查找最后一个逗号 NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch]; if (range.location != NSNotFound) [string deleteCharactersInRange:range]; return string; } @end
11-了解-获得文件的MIMEType
// // ViewController.m // 11-了解-获得文件的MIMEType #import "ViewController.h" #import <MobileCoreServices/MobileCoreServices.h> #import "NSString+MIMEType.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"%@", [@"/Users/xiaomage/Desktop/test.mp4" MIMEType]); NSLog(@"%@", [@"/Users/xiaomage/Desktop/test.png" MIMEType2]); // NSLog(@"%@", [ViewController mimeTypeForFileAtPath:@"/Users/xiaomage/Desktop/test.png"]); } + (NSString *)mimeTypeForFileAtPath:(NSString *)path { if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { return nil; } CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)[path pathExtension], NULL); CFStringRef MIMEType = UTTypeCopyPreferredTagWithClass (UTI, kUTTagClassMIMEType); CFRelease(UTI); if (!MIMEType) { return @"application/octet-stream"; } return (__bridge NSString *)MIMEType; } - (void)MIMEType { // NSString *url = @"file:///Users/xiaomage/Desktop/test.pptx"; // NSString *urlString = @"file:///Users/xiaomage/Desktop/test.png"; // NSURL *url = [NSURL URLWithString:urlString]; NSURL *url = [NSURL fileURLWithPath:@"/Users/xiaomage/Desktop/test.png"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; // [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { // NSLog(@"%@", response.MIMEType); // }]; NSURLResponse *response = nil; [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; NSLog(@"%@", response.MIMEType); } - (NSString *)getMIMEType:(NSString *)file { NSURLResponse *response = nil; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:file]]; [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; return response.MIMEType; } @end
// // NSString+MIMEType.h // 11-了解-获得文件的MIMEType #import <Foundation/Foundation.h> @interface NSString (MIMEType) - (NSString *)MIMEType; - (NSString *)MIMEType2; @end
// // NSString+MIMEType.m // 11-了解-获得文件的MIMEType #import "NSString+MIMEType.h" #import <MobileCoreServices/MobileCoreServices.h> @implementation NSString (MIMEType) - (NSString *)MIMEType { if (![[NSFileManager defaultManager] fileExistsAtPath:self]) { return nil; } CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)[self pathExtension], NULL); CFStringRef MIMEType = UTTypeCopyPreferredTagWithClass (UTI, kUTTagClassMIMEType); CFRelease(UTI); if (!MIMEType) { return @"application/octet-stream"; } return (__bridge NSString *)MIMEType; } - (NSString *)MIMEType2 { NSURLResponse *response = nil; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:self]]; [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; return response.MIMEType; } @end
相关文章推荐
- 文件的上传\-\请求参数的中文乱码问题------11-10-20
- 源码0603-10-掌握-MD5加密-11-掌握-HTTPS
- 源码0602-06-掌握-小文件下载-大文件下载
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- CS Tip 11: 修改上传文件的大小限制
- 用jspSmartUpload上传文件同时获得参数的方法。
- 带进度条的文件上传(java+ajax,附源码
- ASP.net下大文件上传的解决方案及WebbUpload组件源码 (转自Wu.Country@侠缘 )
- XMLHTTP的应用,获得远程的文件,获得远程HTML文件源码
- [导入].net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等
- 大文件上传并显示进度和上传速率示例及组建源码
- XMLHTTP的应用,获得远程的文件,获得远程HTML文件源码
- PHP网页源码--上传文件
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等
- JS 控制RadioButtonList 获得上传文件类型后选中
- CS Tip 11: 修改上传文件的大小限制
- 大灰狼的ASP工具箱——XMLHTTP的应用,获得远程的文件,获得远程HTML文件源码
- 文件上传程序的全部源码
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等