Bonjour à tous
Je rencontre actuellement un problème lorsque je cherche à envoyer mes images depuis l'iphone vers internet, elles n'arrivent pas complète à destination.
Je m'explique, j'envoie des données (via un NSMutableData), une première image, puis une seconde image. Les relevés donnent ça :
Les tailles sont alors bonnes.
J'envoie sur le serveur, (qui contient un code tout simple d'upload, et pour plus de sécu, j'ai fait affiché les tailles d'images) et je me retrouve avec une image de 70ko et l'autre de 167ko. Il m'est donc impossible de les exploiter.
Chose importante à préciser, je n'ai aucun message d'erreur
Voici les codes correspondant au problème :
Maintenant, la fonction qui permet l'envoi d'image
Voilà je pense que tout est mis, je n'ai rien oublié.
Le code coté serveur est un upload classique mais de toute façon je pense que le problème vient de la connection, cependant, je ne vois pas comment, je suis en local pour mes tests.
Merci d'avance de vos idées
Je rencontre actuellement un problème lorsque je cherche à envoyer mes images depuis l'iphone vers internet, elles n'arrivent pas complète à destination.
Je m'explique, j'envoie des données (via un NSMutableData), une première image, puis une seconde image. Les relevés donnent ça :
Before img_one : 999
Img_one : 142946
before img_two : 143945
Img_two : 191841
Total : 335848
Les tailles sont alors bonnes.
J'envoie sur le serveur, (qui contient un code tout simple d'upload, et pour plus de sécu, j'ai fait affiché les tailles d'images) et je me retrouve avec une image de 70ko et l'autre de 167ko. Il m'est donc impossible de les exploiter.
Chose importante à préciser, je n'ai aucun message d'erreur
Voici les codes correspondant au problème :
Bloc de code:
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@save_spot.php?from_iphone=true", self.baseUrl]];
NSMutableURLRequest *query = [[NSMutableURLRequest alloc] initWithURL:url];
//On envoie par POST
//Ne pas oublier, encodage UTF8 parce qu'on doit gérer les accents
[query setHTTPMethod:@"POST"];
//Création du header (long, long, long)
[query addValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary] forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[self makeDataProperty:@"password" value:password]dataUsingEncoding:NSUTF8StringEncoding]];
//Normalement, il y a plus d'info mais passons
//makeDataProperty fonctionne très bien, pas la peine de la montrer
NSLog(@"Before img_one : %u", [body length]);
if (![spot.img_one isEqualToString:@""]) {
[body appendData:[self addHeaderForImage:spot.img_one andNumberIs:1]];
NSLog(@"Img_one : %u", [self addHeaderForImage:spot.img_one andNumberIs:1].length);
}
NSLog(@"before img_two : %u", [body length]);
if (![spot.img_two isEqualToString:@""]) {
[body appendData:[self addHeaderForImage:spot.img_two andNumberIs:2]];
NSLog(@"Img_two : %u", [self addHeaderForImage:spot.img_two andNumberIs:2].length);
}
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[query addValue:[NSString stringWithFormat:@"%u",body.length] forHTTPHeaderField:@"Content-Length"];
[query setHTTPBody:body];
NSLog(@"Total : %u", query.HTTPBody.length);
NSURLResponse* response = nil;
NSError* error = nil;
NSData *result = [NSURLConnection sendSynchronousRequest:query returningResponse:&response error:&error];
//Bien évidemment, il reste du code de traitement des erreurs derrière
Maintenant, la fonction qui permet l'envoi d'image
Bloc de code:
- (NSMutableData*)addHeaderForImage:(NSString *)image andNumberIs:(int)number {
if ([[NSFileManager defaultManager] fileExistsAtPath:image]) {
if ([image.pathExtension isEqual:@"png"] || [image.pathExtension isEqual:@"jpg"]
||
[image.pathExtension isEqual:@"PNG"] || [image.pathExtension isEqual:@"JPG"]) {
NSString* img_name = [NSString stringWithFormat:@"%i.%@", number, image.pathExtension];
NSData* dataImg = nil;
NSMutableData* header = [[NSMutableData alloc]init];
if ([image.pathExtension isEqual:@"png"] || [image.pathExtension isEqual:@"PNG"])
dataImg = UIImagePNGRepresentation([UIImage imageWithContentsOfFile:image]);
else if ([image.pathExtension isEqual:@"jpg"] || [image.pathExtension isEqual:@"JPG"])
dataImg = UIImageJPEGRepresentation([UIImage imageWithContentsOfFile:image], 1.0);
[header appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", self.boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[header appendData:[[NSString stringWithFormat:@"Content-Disposition: attachment; name=\"%i\"; filename=\"%@\"\r\n", number, img_name] dataUsingEncoding:NSUTF8StringEncoding]];
[header appendData:[NSData dataWithData:dataImg]];
return header;
}
}
return nil;
}
Voilà je pense que tout est mis, je n'ai rien oublié.
Le code coté serveur est un upload classique mais de toute façon je pense que le problème vient de la connection, cependant, je ne vois pas comment, je suis en local pour mes tests.
Merci d'avance de vos idées