iOS- 利用AFNetworking(AFN) - 實現文件上傳


 官方建議AFN的使用方法

 

 1. 定義一個全局的AFHttpClient:包含有

    1> baseURL

    2> 請求

    3> 操作隊列 NSOperationQueue

 2. 由AFHTTPRequestOperation負責所有的網絡操作請求

 

 

 

 

0.導入框架准備工作                                   

•1. 將框架程序拖拽進項目
•2.  添加iOS框架引用
–SystemConfiguration.framework
–MobileCoreServices.framework
•3.  引入

#import "AFNetworking.h"

 

4. 修改xxx-Prefix.pch文件

 

 #import <MobileCoreServices/MobileCoreServices.h>

 

 #import <SystemConfiguration/SystemConfiguration.h>

 

 

1.AFN的客戶端,使用基本地址初始化,同時會實例化一個操作隊列,以便於后續的多線程處理  

 1 @interfaceViewController ()  2 
 3 {  4 
 5     // AFN的客戶端,使用基本地址初始化,同時會實例化一個操作隊列,以便於后續的多線程處理
 6 
 7     AFHTTPClient    *_httpClient;
17     NSOperationQueue *_queue; 18 
19 }
1 - (void)viewDidLoad 2 { 3  [super viewDidLoad]; 4     
5     NSURL *url = [NSURL URLWithString:@"http://192.168.3.255/~apple/qingche"]; 6     _httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 7     
8     _queue = [[NSOperationQueue alloc] init]; 9 }

 

2.利用AFN實現文件上傳操作細節                            

 1 #pragma mark - 文件上傳
 2 - (IBAction)uploadImage  3 {  4     /*
 5  此段代碼如果需要修改,可以調整的位置  6      
 7  1. 把upload.php改成網站開發人員告知的地址  8  2. 把file改成網站開發人員告知的字段名  9      */
10     // 1. httpClient->url 11     
12     // 2. 上傳請求POST
13     NSURLRequest *request = [_httpClient multipartFormRequestWithMethod:@"POST" path:@"upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 14         // 在此位置生成一個要上傳的數據體 15         // form對應的是html文件中的表單
16         
17         
18         UIImage *image = [UIImage imageNamed:@"頭像1"]; 19         NSData *data = UIImagePNGRepresentation(image); 20         
21         // 在網絡開發中,上傳文件時,是文件不允許被覆蓋,文件重名 22         // 要解決此問題, 23         // 可以在上傳時使用當前的系統事件作為文件名
24         NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 25         // 設置時間格式
26         formatter.dateFormat = @"yyyyMMddHHmmss"; 27         NSString *str = [formatter stringFromDate:[NSDate date]]; 28         NSString *fileName = [NSString stringWithFormat:@"%@.png", str]; 29         
30         
31         /*
32  此方法參數 33  1. 要上傳的[二進制數據] 34  2. 對應網站上[upload.php中]處理文件的[字段"file"] 35  3. 要保存在服務器上的[文件名] 36  4. 上傳文件的[mimeType] 37          */
38         [formData appendPartWithFileData:data name:@"file" fileName:fileName mimeType:@"image/png"]; 39  }]; 40     
41     // 3. operation包裝的urlconnetion
42     AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 43     
44     [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 45         NSLog(@"上傳完成"); 46     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 47         NSLog(@"上傳失敗->%@", error); 48  }]; 49     
50     //執行
51     [_httpClient.operationQueue addOperation:op];

   

 

作者: 清澈Saup
出處: http://www.cnblogs.com/qingche/
本文版權歸作者和博客園共有,歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM