Też mam ten problem przed, ja sprawdzam nagłówek i porównuję długość zawartości z danymi, które kończą się pobieraniem.
Jeśli serwer internetowy działa poprawnie i może zwrócić poprawną odpowiedź dla Content-Length, można go użyć do sprawdzenia danych.
Oto urywek pobrać tylko nagłówek wniosek:
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:url] autorelease];
request.HTTPMethod = @"HEAD";
NSHTTPURLResponse *response;
[NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:nil];
if ([response respondsToSelector:@selector(allHeaderFields)]) {
NSDictionary header = [response allHeaderFields];
NSString *rawContentLength = [header objectForKey:@"Content-Length"];
NSNumber *contentLength = [NSNumber numberWithInt:[rawContentLength intValue]];
// Convert contentLength to NSUInteger and use to compare with you NSData length.
}
można również używać go z NSHTTPURLResponse użyć, aby pobrać obraz, aby zapisać żądanie HTTP.
Następnie należy uzyskać długość NSData. Można użyć metody:
NSUInteger dataLength = [downloadedData length];
następnie porównać zarówno wartość, jeśli dwie długości są równe, to go pobrać kompletny, jeszcze trzeba by ponownie pobrać.
Można również sprawdzić, czy obraz jest uszkodzony, odczytać nagłówek Content-Type i sprawdzić pierwsze i ostatnie bajty danych.
Dla PNG How to check if downloaded PNG image is corrupt? Nie zapomnij o "bajcie" do "zwęglenia", i tak zobaczysz ostrzeżenie.
Dla JPEG Catching error: Corrupt JPEG data: premature end of data segment
Nadzieja to może pomóc. :)
Prawdopodobnie błąd w analizie składniowej – Alistra
Zastanawiające się również, czy wystąpiły problemy z pobieraniem połowy obrazu, więc dolna połowa będzie czarna. Albo obraz wyglądałby tak, jakby miał nad nim dziwny żółty filtr. Napotkano ten problem w Parse 1.7.5 – Drenguin