0

アップデート

問題は networkQueue にあると思います。[self.networkQueue addOperation:request][request startAsynchronous]または[request startSynchronous]に置き換えると、機能します。

コードを更新して、より明確にします。

オリジナル

ASIHTTPRequest を使用して、エンコードされた画像 (または [request setFile:imagefile...]) を含む json のファイルをアップロードしましたが、進行状況を更新できません。

値: 1.000000という出力が 1 つだけ得られました。これは、アップロードが完了したことを意味します。

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);
    }
4

1 に答える 1

1

文字列をアップロードする場合、(画像をアップロードする場合とは対照的に) アップロードするデータが非常に少ないため、すべてを 1 ステップでアップロードします。ファイルから巨大な文字列を読み取って、何が起こるかを確認できます。

于 2012-08-15T10:05:27.957 に答える