Bu sorunun eski olduğunu biliyorum, ancak son günlerde aynı soruyu çözmek için tüm web'de arama yaptım. Resimler, başlık ve açıklama gönderen grails REST webservices ve iPhone Client var.
Yaklaşımımın en iyisi olup olmadığını bilmiyorum, ama çok kolay ve basit.
UIImagePickerController kullanarak bir resim çekmek ve resmin veri göndermek için istek başlık etiketleri kullanarak NSData sunucuya gönderirim.
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];
Sunucu tarafında, kodu kullanarak fotoğrafı alıyorum:
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")
}
Gelecekte sorun yaşayıp yaşamadığımı bilmiyorum ama şimdi üretim ortamında iyi çalışıyor.