Carica l'immagine dall'URL in iPhone, solo se piccola
-
19-09-2019 - |
Domanda
sto usando initWithContentsOfURL Di NSData per caricare un'immagine da un URL.Tuttavia, non conosco in anticipo la dimensione dell'immagine e vorrei che la connessione si interrompesse o fallisse se la risposta supera una determinata dimensione.
C'è un modo per farlo? i phone 3.0?
Grazie in anticipo.
Soluzione
Tuttavia, non puoi farlo direttamente tramite NSData NSURLConnessione supporterebbe una cosa del genere caricando l'immagine in modo asincrono e utilizzando connessione: didReceiveData: per verificare quanti dati hai ricevuto.Se superi il limite, invia semplicemente il Annulla messaggio a NSURLConnection per interrompere la richiesta.
Esempio semplice:(receivedData è definito nell'intestazione come NSMutableData)
@implementation TestConnection
- (id)init {
[self loadURL:[NSURL URLWithString:@"http://stackoverflow.com/content/img/so/logo.png"]];
return self;
}
- (BOOL)loadURL:(NSURL *)inURL {
NSURLRequest *request = [NSURLRequest requestWithURL:inURL];
NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
if (conn) {
receivedData = [[NSMutableData data] retain];
} else {
return FALSE;
}
return TRUE;
}
- (void)connection:(NSURLConnection *)conn didReceiveResponse:(NSURLResponse *)response {
[receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)data {
[receivedData appendData:data];
if ([receivedData length] > 5120) { //5KB
[conn cancel];
}
}
- (void)connectionDidFinishLoading:(NSURLConnection *)conn {
// do something with the data
NSLog(@"Succeeded! Received %d bytes of data", [receivedData length]);
[receivedData release];
}
@end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow