iOS- 利用AFNetworking3.0+(最新AFN),afnetworking3.0afn

來源:互聯網
上載者:User

iOS- 利用AFNetworking3.0+(最新AFN),afnetworking3.0afn
0.匯入架構準備工作  •1. 將AFNetworking3.0+架構程式拖拽進項目 •2. 或使用Cocopod 匯入AFNetworking3.0+ •3.  引入#import "AFNetworking.h" 1.UI準備工作  

//.h檔案#import <UIKit/UIKit.h>@interface ViewController : UIViewController@property (weak, nonatomic) IBOutlet UIImageView *imageView;//上傳進度條@property (weak, nonatomic) IBOutlet UIProgressView *progressView;@end

 

2.利用AFN實現檔案上傳操作細節  
- (void)uploadImage{        /*            此段代碼如果需要修改,可以調整的位置            1. 把upload.php改成網站開發人員告知的地址            2. 把file改成網站開發人員告知的欄位名        */        //AFN3.0+基於封住HTPPSession的控制代碼    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];        NSDictionary *dict = @{@"username":@"Saup"};        //formData: 專門用於拼接需要上傳的資料,在此位置產生一個要上傳的資料體    [manager POST:@"http://192.168.1.111:12345/upload.php" parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {                UIImage *image =[UIImage imageNamed:@"moon"];        NSData *data = UIImagePNGRepresentation(image);                // 在網路開發中,上傳檔案時,是檔案不允許被覆蓋,檔案重名        // 要解決此問題,        // 可以在上傳時使用當前的系統事件作為檔案名稱        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];        // 設定時間格式        formatter.dateFormat = @"yyyyMMddHHmmss";        NSString *str = [formatter stringFromDate:[NSDate date]];        NSString *fileName = [NSString stringWithFormat:@"%@.png", str];                //上傳         /*         此方法參數             1. 要上傳的[位元據]             2. 對應網站上[upload.php中]處理檔案的[欄位"file"]             3. 要儲存在伺服器上的[檔案名稱]             4. 上傳檔案的[mimeType]        */        [formData appendPartWithFileData:data name:@"file" fileName:fileName mimeType:@"image/png"];            } progress:^(NSProgress * _Nonnull uploadProgress) {                //上傳進度        // @property int64_t totalUnitCount;     需要下載檔案的總大小        // @property int64_t completedUnitCount; 當前已經下載的大小        //        // 給Progress添加監聽 KVO        NSLog(@"%f",1.0 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);        // 回到主隊列重新整理UI,使用者自訂的進度條        dispatch_async(dispatch_get_main_queue(), ^{            self.progressView.progress = 1.0 *            uploadProgress.completedUnitCount / uploadProgress.totalUnitCount;        });     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {        NSLog(@"上傳成功 %@", responseObject);            } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {                NSLog(@"上傳失敗 %@", error);    }];    }
 4.檢測網路狀態--最佳化使用者體驗   
- (void)viewDidLoad {        [super viewDidLoad];        //網路監控控制代碼    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];        //要監控網路連接狀態,必須要先調用單例的startMonitoring方法    [manager startMonitoring];        [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {        //status:        //AFNetworkReachabilityStatusUnknown          = -1,  未知        //AFNetworkReachabilityStatusNotReachable     = 0,   未串連        //AFNetworkReachabilityStatusReachableViaWWAN = 1,   3G        //AFNetworkReachabilityStatusReachableViaWiFi = 2,   無線串連        NSLog(@"%d", status);    }];}

 

· AFNetworking3.0以下的版本使用方法可以看我老版本的日誌:

iOS- 利用AFNetworking(AFN) - 實現檔案上傳

 

作者: 清澈Saup

出處: http://www.cnblogs.com/qingche/

本文著作權歸作者和部落格園共有,歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文串連。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.