iOS上傳圖片之AFURLSessionManager

AFHTTPRequestOperationManager的底層使用了NSOperation,并且使用的是NSURLConnection,可支持iOS6及更新的系統(tǒng)版本;AFURLSessionManager使用的是更新的NSURLSession,支持iOS7.0以上系統(tǒng)。本人強(qiáng)烈建議使用AFURLSessionManager除非你要使用operations或者需要支持iOS6。3.0的AFNetowrking使用AFHttpSessionManager代替AFHTTPRequestOperationManager,請注意!

下面來寫一下AFURLSessionManager的上傳圖片方法:

//上傳圖片
- (void)requestUploadPhotoWithImage:(UIImage *)image withSucess:(HLSucessBlock)success failure:(HLFailureBlock)failure
{
    NSData *imagedata = UIImageJPEGRepresentation(image, 0.7f);
     
    NSString *urlString = [NSString stringWithFormat:@"%@%@",HLNETWORK_BASE_URL_TEST,kUrl_UploadImages];
    urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    NSString *token = [HLFitmentManager instance].userInfo.token;
    if (CHECK_VALID_STRING(token)) {
        [params setObject:token forKey:@"token"];
    }

    NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer]multipartFormRequestWithMethod:@"POST" URLString:urlString parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        formatter.dateFormat = @"yyyyMMddHHmmss";
        NSString *str = [formatter stringFromDate:[NSDate date]];
        NSString *fileName = [NSString stringWithFormat:@"%@.jpg",str];
        [formData appendPartWithFileData:imagedata name:@"image" fileName:fileName mimeType:@"image/jpeg"];
    } error:nil];
    
    AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    
    NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) {
        //進(jìn)度
    } completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
        HLParser *parser = [[HLParser alloc] init];
        BOOL isError = [parser hasErrorWithDict:responseObject];
        if (isError) {
            //上傳圖片失敗
            NSLog(@"上傳圖片失敗");
            failure(nil,parser.error);
        }else {
            NSLog(@"上傳圖片成功");
            success(nil,responseObject);
        }
    }];
    [uploadTask resume];
}

本文Demo地址:https://github.com/JinqianChina/uploadImage

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.官網(wǎng)文檔外加點(diǎn)中文注釋AFNetworking官網(wǎng)(點(diǎn)擊進(jìn)入) AFNetworking翻譯注釋Archite...
    小名一峰閱讀 3,869評論 5 25
  • AFN什么是AFN全稱是AFNetworking,是對NSURLConnection、NSURLSession的一...
    醉葉惜秋閱讀 1,343評論 0 0
  • 在蘋果徹底棄用NSURLConnection之后自己總結(jié)的一個網(wǎng)上的內(nèi)容,加上自己寫的小Demo,很多都是借鑒網(wǎng)絡(luò)...
    付寒宇閱讀 4,529評論 2 13
  • 同步請求和異步請求- 同步請求:阻塞式請求,會導(dǎo)致用戶體驗(yàn)的中斷- 異步請求:非阻塞式請求,不中斷用戶體驗(yàn),百度地...
    WangDavid閱讀 673評論 0 0
  • 天氣越來越熱燥,隨著天氣一同火熱起來的是“高考話題”,還有關(guān)于高考“唯分論”和“素質(zhì)論”的爭論。 對于高考這個話題...
    王力黑閱讀 706評論 0 1

友情鏈接更多精彩內(nèi)容