JSON
kullanarak bir sunucuya görüntü yüklemek için bu işlevi kullanıyorum. Bunu yapmak için önce görüntüyü NSData
'a ve daha sonra kullanarak NSString
'a dönüştürüyorum. Yöntem, görüntü çok büyük olmadığında iyi çalışır, ancak 2Mb resmi yüklemeye çalıştığımda, çöker.Base64 ve JSON kullanarak büyük resimler yükleme
sorun sunucu didReceiveResponse
yöntem (null)
döndürür didReceiveData
yanı sıra denir halde Resmimi almaz olmasıdır. İlk başta bir zaman aşımı sorunu olduğunu düşündüm ama 1000.0'a ayarladım bile hala çalışmıyor. Herhangi bir fikir? Zaman ayırdığın için teşekkürler!
- (void) imageRequest {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.myurltouploadimage.com/services/v1/upload.json"]];
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [NSString stringWithFormat:@"%@/design%i.png",docDir, designNum];
NSLog(@"%@",path);
NSData *imageData = UIImagePNGRepresentation([UIImage imageWithContentsOfFile:path]);
[Base64 initialize];
NSString *imageString = [Base64 encode:imageData];
NSArray *keys = [NSArray arrayWithObjects:@"design",nil];
NSArray *objects = [NSArray arrayWithObjects:imageString,nil];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:kNilOptions error:&error];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"%d",[jsonData length]] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
NSLog(@"Image uploaded");
}
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"didReceiveResponse");
}
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSLog(@"%@",[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]);
}
en azından, url denir olmadığını görmek için php web sayfasındaki herhangi günlükleri eklediniz mi? bir dosya günlüğü veya sql günlüğü gibi mi? – Vinzius
Aslında, sunucu tarafındaki programcı, web sitesi herhangi bir veri alırsa, yanıtın her zaman geri döndüğünü söyledi. Sonuç olarak benim isteğim, talebi bile almadı. –
Yan yana: değişmezleri kullanmak işleri daha kolay/daha açık hale getirir: 'NSDictionary * jsonDictionary = @ {@" tasarım ": imageString};' – zaph