Ich verwende das AFNetworking Framework, um das Hochladen von Fotos auf eine Website zu erleichtern. Die Uploads funktionieren gut, aber ich muss den Fortschritt in einem UIProgressView anzeigen. Das Problem ist, dass sich der Fortschritt nach dem Hochladen um eine Sekunde von 0 auf 100% verschiebt und für einige Zeit bei 100% bleibt, abhängig von der Anzahl der hochgeladenen Fotos. Ich lade zwischen 1 und 6 Fotos gleichzeitig mit einer einzigen Anfrage hoch. Irgendwelche Ideen, was hier vor sich geht? Umfasst AFNetworking nicht die Größe der Fotos?
Es zeigt ordnungsgemäß in NSLog:AFNetworking setUploadProgressBlock verhält sich nicht direkt zu 100%
2012-04-03 10:49:45.498 PhotoUp[3689:2207] Sent 32768 of 217931 bytes
2012-04-03 10:49:45.499 PhotoUp[3689:2207] Sent 65536 of 217931 bytes
2012-04-03 10:49:45.501 PhotoUp[3689:2207] Sent 98304 of 217931 bytes
2012-04-03 10:49:45.502 PhotoUp[3689:2207] Sent 131072 of 217931 bytes
2012-04-03 10:49:47.795 PhotoUp[3689:2207] Sent 134310 of 217931 bytes
2012-04-03 10:49:49.070 PhotoUp[3689:2207] Sent 136730 of 217931 bytes
2012-04-03 10:49:50.819 PhotoUp[3689:2207] Sent 139150 of 217931 bytes
2012-04-03 10:49:52.284 PhotoUp[3689:2207] Sent 141570 of 217931 bytes
Hier ist der Code:
NSString *numberOfPhotosAsString = [NSString stringWithFormat:@"%d", numberOfPhotos];
NSString *fileBase = @"file0_";
NSString *fileNameBase = @"SourceName_";
NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
numberOfPhotosAsString, @"PackageFileCount",
wtID, @"wtID",
@"PU", @"type",
nil];
for (int i= 0; i < numberOfPhotos; i++)
{
[params setObject:[fileNames objectAtIndex:i] forKey:[fileNameBase stringByAppendingFormat:@"%i", i]];
}
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/ReceivePhoto.aspx" parameters:params constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
for (int i = 0; i < numberOfPhotos; i++)
{
// may want to experiment with the compression quality (0.5 currently)
NSData *imageData = UIImageJPEGRepresentation([images objectAtIndex:i], 0.5);
[formData appendPartWithFileData:imageData name:[fileBase stringByAppendingFormat:@"%i", i] fileName:[fileNames objectAtIndex:i] mimeType:@"image/jpeg"];
}
}];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSInteger bytesWritten, NSInteger totalBytesWritten, NSInteger totalBytesExpectedToWrite) {
NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);
float progress = totalBytesWritten/totalBytesExpectedToWrite;
[selectLabel setText:[NSString stringWithFormat:@"%d", progress]];
[progressView setProgress: progress];
//[testProgressView setProgress:progress];
}];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
[self imageRequestDidFinish];
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error: %@", operation.responseString);
}
];
Ich habe versucht, diese Antwort zu posten, aber nicht genug Rep innerhalb von 8 Stunden, um meine eigene Frage zu beantworten. Du hast allerdings Recht, was für ein Anfängerfehler! Vielen Dank! – HackyStack