2012-08-15 67 views
0

更新ASIHTTPRequest不會更新進度

我認爲這個問題是與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

如果您上傳一個字符串,你可能有那麼一點數據上載(與上傳圖片的時候),它上傳一步到位的一切。你可以嘗試從文件中讀取一個巨大的字符串,看看會發生什麼。

+0

嗨,感謝您的回覆。字符串來自圖像,大約1米。我試過setFile:imageUrl,addData:imageData,都一樣。我已經更新了這個問題,請看看。 – ThinkChris 2012-08-15 10:10:36