1

AFNetworkingを使用して複数のファイルをアップロードしています。画像ごとに画像の幅/高さなどの追加情報を送信する必要があります。

画像をループして送信するだけだと思っていましたが、AFNetworkingはそれを完全には処理しません。
(AFNetworkingは複数の要求を1つに結合し、余分な情報を上書きしていると思います)

以下は私のコードです。

NSURL *url = [NSURL URLWithString:@URL_BASE];
int count = [imageArray count];

for(int i = 0; i < count; ++i)
 {
     UIImage* image = [imageArray objectAtIndex:i];
     AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
     NSDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys:
                                             [NSNumber numberWithFloat: image.size.width], @"width",
                                             [NSNumber numberWithFloat: image.size.height], @"height",
                                          nil];

     NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@PATH_ALBUM_IMAGE_UPLOAD parameters:params constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
             [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"file%d", i]  fileName:@"avatar.jpg" mimeyTpe:@"image/jpeg"];
         }];

     AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
     [operation setUploadProgressBlock:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {

             [progressView setProgress: totalBytesWritten*1.0f / totalBytesExpectedToWrite animated: YES];
             NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
             if(totalBytesWritten >= totalBytesExpectedToWrite)
             {
                 progressView.hidden = YES;
             }
         }];
     [operation start];
 }
4

1 に答える 1

1

これは、AFNetworkingの既知の(ただし現在は修正されている)バグであることが判明しました。

AFNetworking

問題が解決しました。

于 2012-12-18T02:53:32.100 に答える