0
我認爲這個問題是與networkQueue。當我替換[self.networkQueue addOperation:請求]與[請求startAsynchronous]或[request startSynchronous],它的工作原理。
我更新了代碼,使其更加清晰。
原始
我使用ASIHTTPRequest上傳與編碼圖像的JSON的一個文件(或[請求setFile:鏡像文件...]),但我不能更新的進展。
我只有一個輸出:值: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米。我試過setFile:imageUrl,addData:imageData,都一樣。我已經更新了這個問題,請看看。 – ThinkChris 2012-08-15 10:10:36