2012-08-15 2 views
0

갱신ASIHTTPRequest이 진행

업데이트하지 않습니다 나는 문제가 networkQueue으로 생각합니다. [self.networkQueue addOperation : request][요구 startAsynchronous] 또는 [요청 startSynchronous]으로 바꿉니다.

코드를보다 명확하게 업데이트합니다.

원래

내가 인코딩 된 이미지와 JSON의 파일을 업로드 할 ASIHTTPRequest를 사용 (또는 [요청 setFile : ... imagefile을),하지만 난 진행 상황을 업데이트 할 수 없습니다.

출력이 하나 뿐인데 값 : 1.000000입니다. 이는 업로드가 완료되었음을 의미합니다.

incrementUploadSizeBy가 트리거되지 않았습니다.

나는 온라인을 많이 검색했지만 여전히 답을 찾을 수 없습니다. 여기 내 코드가있다.

+ (ASIEngine *)sharedInstance { 
    static ASIEngine *sharedInstance = nil; 
    static dispatch_once_t pred; 

    dispatch_once(&pred, ^{ 
     sharedInstance = [[self alloc] init]; 
    }); 

    return sharedInstance; 
} 

- (id)init { 
    if (self = [super init]) { 
     _networkQueue = [ASINetworkQueue queue]; 
     [_networkQueue setMaxConcurrentOperationCount:MAX_CONCURRENT_OPERATION_COUNT]; 
     [_networkQueue setDelegate:self]; 
     [_networkQueue go]; 
    } 
    return self; 
} 

    - (void)upload:(NSString *)imageJsonString onCompletion:(void(^)(NSString *responseString))onCompletion onFailed:(void(^)(NSError *error))onFailed { 

     __unsafe_unretained __block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:UPLOAD_URL]]; 
     [request setShowAccurateProgress:YES]; 
     [request setUploadProgressDelegate:self]; 

     [request setPostValue:imageJsonString forKey:@"imageString"]; 

     [request setCompletionBlock:^{ 
      NSString *responseString = [request responseString]; 
      onCompletion(responseString); 
     }]; 

     [request setFailedBlock:^{ 
      onFailed([request error]); 
     }]; 

     [self.networkQueue addOperation:request]; 
    } 

    #pragma mark - ASIProgressDelegate 

    - (void)setProgress:(float)newProgress { 
     NSLog(@"value: %f", newProgress); 
    } 

    - (void)request:(ASIHTTPRequest *)request incrementUploadSizeBy:(long long)newLength { 
     NSLog(@"data length: %lld", newLength); 
    } 

답변

1

당신이 문자열을 업로드하는 경우, 당신은 아마 한 번에 모든 것을 업로드 것으로, (사진을 업로드 할 때 반대) 업로드 할 수 있도록 약간의 데이터를 가지고있다. 파일에서 거대한 문자열을 읽고 무슨 일이 일어나는 지 볼 수 있습니다.

+0

안녕하세요. 응답 해 주셔서 감사합니다. 문자열은 이미지에서 약 1m입니다. 나는 setFile : imageUrl, addData : imageData 같은 것을 시도했다. 나는 질문을 업데이트했다. 한번 보아라. – ThinkChris