文件下载及上传

文件解压缩

+(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

获得文件的 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);
}
上一篇:单和多继承属性查找顺序,super,多态,组合


下一篇:面向对象之类方法,属性方法,和静态方法