小文件下载
如果文件比较小,下载方式会比较多
直接用NSData的+ (id)dataWithContentsOfURL:(NSURL *)url;
利用NSURLConnection发送一个HTTP请求去下载
如果是下载图片,还可以利用SDWebImage框架
如果是大文件下载,建议使用NSURLSession或者第三方框架
文件上传的步骤
设置请求头 [request setValue:@"multipart/form-data; boundary=分割线" forHTTPHeaderField:@"Content-Type"]; 设置请求体 非文件参数 --分割线 Content-Disposition: form-data; name="参数名" 参数值
文件参数 --分割线 Content-Disposition: form-data; name="参数名"; filename="文件名" Content-Type: 文件的MIMEType 文件数据 参数结束的标记 --分割线--
部分文件的MIMEType
获得文件的MIMEType
利用NSURLConnection - (NSString *)MIMEType:(NSURL *)url { // 1.创建一个请求 NSURLRequest *request = [NSURLRequest requestWithURL:url]; // 2.发送请求(返回响应) NSURLResponse *response = nil; [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; // 3.获得MIMEType return response.MIMEType; }
C语言API + (NSString *)mimeTypeForFileAtPath:(NSString *)path { if (![[NSFileManager alloc] init] fileExistsAtPath:path]) { return nil; } CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)[path pathExtension], NULL); CFStringRef MIMEType = UTTypeCopyPreferredTagWithClass (UTI, kUTTagClassMIMEType); CFRelease(UTI); if (!MIMEType) { return @"application/octet-stream"; } return NSMakeCollectable(MIMEType); }
第三方解压缩框架——ZipArchive
下载地址:https://github.com/ZipArchive/ZipArchive
需要引入libz.dylib框架
导入头文件Main.h
创建压缩文件
+ (BOOL)createZipFileAtPath:(NSString *)path
withFilesAtPaths:(NSArray *)paths;
+ (BOOL)createZipFileAtPath:(NSString *)path
withContentsOfDirectory:(NSString *)directoryPath;
解压
+ (BOOL)unzipFileAtPath:(NSString *)path
toDestination:(NSString *)destination
网络NSURLSession
NSURLSession
使用步骤
使用NSURLSession对象创建Task,然后执行Task
Task的类型
获得共享的Session + (NSURLSession *)sharedSession; 自定义Session + (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(id <NSURLSessionDelegate>)delegate delegateQueue:(NSOperationQueue *)queue;
NSURLSessionTask
常见方法 - (void)suspend; // 暂停 - (void)resume; // 恢复 - (void)cancel; // 取消 @property (readonly, copy) NSError *error; // 错误 @property (readonly, copy) NSURLResponse *response; // 响应
NSURLSessionDownloadTask
常见方法 - (void)cancelByProducingResumeData:(void (^)(NSData *resumeData))completionHandler; // 取消任务