2010-07-01 8 views
1

Je suis en train de télécharger un fichier image sur un serveur http. Voici le fragment de codefichier http télécharger Objectif C

NSData *imgData = UIImagePNGRepresentation(img); 

NSString *post = [NSString stringWithFormat:@"&UserID=%@&Query=%@&fileContent=", userID, @"putImage"]; 

NSMutableData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 

[postData appendBytes:[imgData bytes] length:imgData_len]; 

NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]]; 

NSURL *url = [NSURL URLWithString:@"http://ryan.verifyidonline.com/test.php"]; 

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 

[theRequest setHTTPMethod:@"POST"]; 

[theRequest setValue:postLength forHTTPHeaderField:@"Content-Length"]; 

[theRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"]; 

[theRequest setHTTPBody:postData]; 

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

Ce code envoie uniquement les premiers caractères du fichier image. Je pense que je dois encoder le fichier d'une façon ou d'une autre, mais je n'ai pas eu de chance d'essayer les encodages NSString.

Répondre

1

http://www.cocoadev.com/index.pl?HTTPFileUpload

Bonne chance, il m'a donné un peu de mal mais sur la base des choses ici (vous devrez lire le fond, le code fixe a été présenté au fil du temps) la création d'une manière propre, réutilisable pour Pour ce faire, ne devrait pas prendre trop beaucoup de temps.

0

Il n'y a pas une chance de votre code de travail comme ça. Au moins, vous auriez besoin pour coder les données d'image d'une certaine façon pour que les caractères ASCII (puis pas%, &, = et espace blanc) apparaissent dans la valeur ContenuFichier. Cependant, pour le faire correctement, vous devez créer un corps MIME multipart avec des types de contenu corrects, etc. Je pense que le code dans le lien de Jared fonctionnera, mais il pourrait y avoir un bug dans l'encodage du jeu de caractères. Si vous ne spécifiez pas de charset dans HTTP, ISO-8859-1 est supposé, mais le code semble utiliser partout UTF-8 sans dire le jeu de caractères est UTF-8.

Questions connexes