文件解压缩
-
第三方解压缩框架——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
文件下载
小文件下载
如果文件比较小,下载方式会比较多
- 直接用 NSData 的
+ (id)dataWithContentsOfURL:(NSURL *)url
- 利用 NSURLConnection 发送一个 HTTP 请求去下载
- 如果是下载图片,还可以利用 SDWebImage 框架
如果是大文件下载,建议使用 NSURLSession 或者第三方框架
文件上传
文件上传的步骤
- 设置请求头
[request setValue:@"multipart/form-data; boundary=分割线" forHTTPHeaderField:@"Content-Type"];
设置请求体
非文件参数
--分割线\r\n
Content-Disposition: form-data; name="参数名"\r\n
\r\n
参数值
\r\n文件参数
--分割线\r\n
Content-Disposition: form-data; name="参数名"; filename="文件名"\r\n
Content-Type: 文件的MIMEType\r\n
\r\n
文件数据
\r\n参数结束的标记
--分割线--\r\n
部分文件的 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, (__bridge CFStringRef)[path pathExtension], NULL);
CFStringRef MIMEType = UTTypeCopyPreferredTagWithClass (UTI, kUTTagClassMIMEType);
CFRelease(UTI);
if (!MIMEType)
{
return @"application/octet-stream";
}
return (__bridge NSString *)(MIMEType);
}