iOS에서 여러 개의 이미지와 글을 서버에 업로드

4901 단어
우선 서버에 다양한 사진을 올리는 만능AFNetworking을 활용해 봉인했다.위 코드 코드가 많지 않습니다.봉인된 네트워크 인터페이스의.h중
/**
         
 
 @param imagesArray           
 @param url            ,   
 @param filename        (           )
 @param name                             
 @param params       
 @param progress       
 @param responseStyle        
 @param success            
 @param fail           
 
 */

+ (void)moreLoadWithImage:(NSMutableArray *)imagesArray
                      url:(NSString *)url 
                 filename:(NSString *)filename
                     name:(NSString *)name
                   params:(NSDictionary *)params
                 progress:(upLoadProgress)progress
              andResponse:(JYJResponseStyle)responseStyle
                  success:(successBlock)success
                     fail:(failureBlock)fail;


.m중
+(void)moreLoadWithImage:(NSMutableArray *)imagesArray url:(NSString *)url filename:(NSString *)filename name:(NSString *)name    params:(NSDictionary *)params progress:(upLoadProgress)progress andResponse:(JYJResponseStyle)responseStyle  success:(successBlock)success fail:(failureBlock)fail {
    [[AFNetworkReachabilityManager sharedManager] startMonitoring];
    //          ,         
    [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        NSLog(@"     = %ld", status);
    }];
    
    // 1.        
    
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer = [AFHTTPRequestSerializer serializer];
   
    // 3.          
    switch (responseStyle) {
        case JYJJSON:
            manager.responseSerializer = [AFJSONResponseSerializer serializer];
            break;
        case JYJXML:
            manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
            break;
        case JYJDATA:
            manager.responseSerializer = [AFHTTPResponseSerializer serializer];
            break;
            
        default:
            break;
    }
    
    // 4.         
    
    [manager.responseSerializer setAcceptableContentTypes:[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/css",@"text/plain", @"application/javascript",@"image/jpeg", @"text/vnd.wap.wml", @"application/x-javascript",@"image/png", nil]];
    
    
    // 5. UTF-8  
    
    url = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    [manager POST:url parameters:params constructingBodyWithBlock:^(id  _Nonnull formData) {
        for (NSInteger i = 0; i < imagesArray.count; i ++) {
            
            //    
            NSData *imageData = UIImageJPEGRepresentation(imagesArray[i], 0.5);
            NSString *imageFileName =filename;
            if (filename == nil || [filename isKindOfClass:[NSString class]] || filename.length == 0) {
                NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
                formatter.dateFormat = @"yyyy-MM-dd-HH-mm-ss";
                NSString *str = [formatter stringFromDate:[NSDate date]];
                imageFileName = [NSString stringWithFormat:@"%@.jpg",str];//                
            }
            //    ,       
            [formData appendPartWithFileData:imageData name:name fileName:imageFileName mimeType:@"image/jpeg"];
            
        }
        
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        NSLog(@"    --%lld,   --%lld",uploadProgress.completedUnitCount,uploadProgress.totalUnitCount);
        if (progress) {
            progress(uploadProgress.completedUnitCount,uploadProgress.totalUnitCount);
        }
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        NSLog(@"      -%@",responseObject);
        if (success) {
            success(responseObject);
        }
        
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error=%@",error);
        if (fail) {
            fail(error);
        }
        
    }];
    
}


각종 매개 변수는 이미 매우 분명하게 썼다.어느 곳에서 직접 사용하면 됩니다.내가 봉한 네트워크 클래스 이름(JYJ NetWorkParser)//다시 한 번 말해봐. 첫 번째 파라미터: 그림 그룹 두 번째 파라미터: 백엔드에서 주는 인터페이스 세 번째 파라미터: 아무 이름이나 지어. 네 번째 파라미터: 백엔드에서 주는 한 필드(백엔드와 일치) 다섯 번째 파라미터: 파라미터(문자 설명 가능)여섯 번째 파라미터: 업로드 진도 일곱 번째 파라미터: 요청 데이터의 형식 여덟 번째 아홉 번째: 요청 성공, 실패 반환 데이터
[JYJNetWorkParser moreLoadWithImage:self.imageArray url:kPostMessageURL filename:@"myImages" name:@"files" params:dic progress:nil andResponse:JYJJSON success:^(id result) {


}fail:^(NSError *error) {
        
      }];

좋은 웹페이지 즐겨찾기