업데이트하지 않습니다 나는 문제가 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);
}
안녕하세요. 응답 해 주셔서 감사합니다. 문자열은 이미지에서 약 1m입니다. 나는 setFile : imageUrl, addData : imageData 같은 것을 시도했다. 나는 질문을 업데이트했다. 한번 보아라. – ThinkChris