Je sais que cette question est ancienne, mais dans les derniers jours, j'avais cherché tout le web à la solution de cette même question. J'ai graal RESTE des services web et Client iPhone que d'envoyer des photos, le titre et la description.
Je ne sais pas si ma méthode est la meilleure, mais c'est tellement facile et simple.
Je prends une photo à l'aide de la UIImagePickerController et de l'envoyer au serveur le NSData en utilisant les balises d'en-tête de requête pour envoyer l'image des données.
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"myServerAddress"]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:UIImageJPEGRepresentation(picture, 0.5)];
[request setValue:@"image/jpeg" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"myPhotoTitle" forHTTPHeaderField:@"Photo-Title"];
[request setValue:@"myPhotoDescription" forHTTPHeaderField:@"Photo-Description"];
NSURLResponse *response;
NSError *error;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
Sur le côté serveur, je reçois la photo en utilisant le code:
InputStream is = request.inputStream
def receivedPhotoFile = (IOUtils.toByteArray(is))
def photo = new Photo()
photo.photoFile = receivedPhotoFile //photoFile is a transient attribute
photo.title = request.getHeader("Photo-Title")
photo.description = request.getHeader("Photo-Description")
photo.imageURL = "temp"
if (photo.save()) {
File saveLocation = grailsAttributes.getApplicationContext().getResource(File.separator + "images").getFile()
saveLocation.mkdirs()
File tempFile = File.createTempFile("photo", ".jpg", saveLocation)
photo.imageURL = saveLocation.getName() + "/" + tempFile.getName()
tempFile.append(photo.photoFile);
} else {
println("Error")
}
Je ne sais pas si j'ai des problèmes dans le futur, mais maintenant fonctionne bien dans un environnement de production.