码迷,mamicode.com
首页 > Web开发 > 详细

过完新年继续学习,让我们来学习下如何计算下载文件大小,并且如何post上传文件

时间:2015-02-20 11:56:42      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

     今天才初二,昨天是回家这么长时间以来唯一放开了好好玩儿的一天,玩儿的很开心.开心之后又开始继续研究和复习.首先愿新的一年万事如意,心想事成,最主要身体健康

    首先,谈谈如何获取下载资源的信息.

    

    NSString *url_string = @"http://box.dwstatic.com/skin/Teemo/Teemo_Splash_0.jpg";

    NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:[NSURL URLWithString:url_string] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];   

    request.HTTPMethod = @"HEAD";

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

        NSLog(@"%@", response);

        NSLog(@"---------------");

        NSLog(@"%@", data);

 }    

//这个方法只能获得下载资源的信息,不回返回数据体.

除了这个还有其他方式可以获得大小

NSURL *url = [NSURL URLWithString:url_string];//转成url

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.f]; //创建成可变网络请求

    [request setHTTPMethod:@"GET"];

    [NSURLConnection connectionWithRequest:request delegate:self];

实现代理

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

     NSLog(@"要下载文件大小为 %@",response);

}

至于如何下载下来这个文件,相信大家有很多方法.

至于文件上传.

大家可以先创建一个上传model.

  1. #import "UploadFile.h"  
  2.   
  3. @implementation UploadFile  
  4. // 拼接字符串  
  5. static NSString *boundaryStr = @"--";   // 分隔字符串  
  6. static NSString *randomIDStr;           // 本次上传标示字符串  
  7. static NSString *uploadID;              // 上传(php)脚本中,接收文件字段  
  8.   
  9. - (instancetype)init  
  10. {  
  11.     self = [super init];  
  12.     if (self) {  
  13.         randomIDStr = @"itcast";  
  14.         uploadID = @"uploadFile";  
  15.     }  
  16.     return self;  
  17. }  
  18.   
  19. #pragma mark - 私有方法  
  20. - (NSString *)topStringWithMimeType:(NSString *)mimeType uploadFile:(NSString *)uploadFile  
  21. {  
  22.     NSMutableString *strM = [NSMutableString string];  
  23.       
  24.     [strM appendFormat:@"%@%@\n", boundaryStr, randomIDStr];  
  25.     [strM appendFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\n", uploadID, uploadFile];  
  26.     [strM appendFormat:@"Content-Type: %@\n\n", mimeType];  
  27.       
  28.     NSLog(@"%@", strM);  
  29.     return [strM copy];  
  30. }  
  31.   
  32. - (NSString *)bottomString  
  33. {  
  34.     NSMutableString *strM = [NSMutableString string];  
  35.       
  36.     [strM appendFormat:@"%@%@\n", boundaryStr, randomIDStr];  
  37.     [strM appendString:@"Content-Disposition: form-data; name=\"submit\"\n\n"];  
  38.     [strM appendString:@"Submit\n"];  
  39.     [strM appendFormat:@"%@%@--\n", boundaryStr, randomIDStr];  
  40.       
  41.     NSLog(@"%@", strM);  
  42.     return [strM copy];  
  43. }  
  44.   
  45. #pragma mark - 上传文件  
  46. - (void)uploadFileWithURL:(NSURL *)url data:(NSData *)data  
  47. {  
  48.     // 1> 数据体  
  49.     NSString *topStr = [self topStringWithMimeType:@"image/png" uploadFile:@"头像1.png"];  
  50.     NSString *bottomStr = [self bottomString];  
  51.       
  52.     NSMutableData *dataM = [NSMutableData data];  
  53.     [dataM appendData:[topStr dataUsingEncoding:NSUTF8StringEncoding]];  
  54.     [dataM appendData:data];  
  55.     [dataM appendData:[bottomStr dataUsingEncoding:NSUTF8StringEncoding]];  
  56.       
  57.     // 1. Request  
  58.     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:2.0f];  
  59.       
  60.     // dataM出了作用域就会被释放,因此不用copy  
  61.     request.HTTPBody = dataM;  
  62.       
  63.     // 2> 设置Request的头属性  
  64.     request.HTTPMethod = @"POST";  
  65.       
  66.     // 3> 设置Content-Length  
  67.     NSString *strLength = [NSString stringWithFormat:@"%ld", (long)dataM.length];  
  68.     [request setValue:strLength forHTTPHeaderField:@"Content-Length"];  
  69.       
  70.     // 4> 设置Content-Type  
  71.     NSString *strContentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", randomIDStr];  
  72.     [request setValue:strContentType forHTTPHeaderField:@"Content-Type"];  
  73.       
  74.     // 3> 连接服务器发送请求  
  75.     [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {  
  76.           
  77.         NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];  
  78.         NSLog(@"%@", result);  
  79.     }];  
  80. }  
  81.   
  82.   
  83.   
  84. @end

 

//接着直接在控制器调用- (void)uploadFileWithURL:(NSURL *)url data:(NSData *)data 即可.

 

关于上传的代码来源于http://blog.csdn.net/codywangziham01/article/details/38044637,这篇博客关于文件的下载和上传讲解的都很多很详细.

 

过完新年继续学习,让我们来学习下如何计算下载文件大小,并且如何post上传文件

标签:

原文地址:http://www.cnblogs.com/myselfxiaoxiao/p/4296457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!