2010-11-24 5 views
1

Est-il possible de soumettre un fichier depuis Cocoa? Ce que je veux dire c'est que j'ai un fichier du côté du client que je veux télécharger sur mon serveur comme si je l'avais sélectionné dans un champ de téléchargement en HTML. Ensuite, j'ai besoin de montrer la réponse envoyée par le serveur dans un champ de texte.Cocoa POST Demande avec le fichier

Est-ce possible, et si oui, puis-je montrer la progression sur une barre de progression? J'ai le code pour envoyer une demande POST régulière, mais je ne sais pas comment envoyer un fichier efficacement à un script PHP côté serveur.

Merci pour toute aide!

Répondre

3

Vous pouvez soumettre un contenu d'un fichier comme celui-ci:

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://"]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"text/xml" forHTTPHeaderField:@"Content-type"]; 

NSString *xmlString = [NSString stringWithFormat:@"%@"]; 

[request setValue:[NSString stringWithFormat:@"%d", [xmlString length]] 
forHTTPHeaderField:@"Content-length"]; 

[request setHTTPBody:[xmlString dataUsingEncoding:NSUTF8StringEncoding]]; 

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

Réponse desservie par votre script PHP peut être récupéré par les délégués (tous doivent être mis en œuvre, voir documentation NSURLConnection pour plus de détails, il y a un exemple):

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse*)response 
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
+0

Cela semble ne fonctionner que pour les fichiers texte ... qu'en est-il des fichiers comme les archives ZIP? –

+0

setHTTPBody accepte tout objet NSData, voir http://stackoverflow.com/questions/3891149/convert-zip-file-into-nsdata –