Saya tahu pertanyaan ini sudah lama, tetapi pada hari-hari terakhir saya telah mencari seluruh web untuk menyelesaikan pertanyaan yang sama. Saya memiliki layanan web REST grails dan Klien iPhone yang mengirim gambar, judul, dan deskripsi.
Saya tidak tahu apakah pendekatan saya adalah yang terbaik, tetapi sangat mudah dan sederhana.
Saya mengambil gambar menggunakan UIImagePickerController dan mengirim ke server NSData menggunakan tag header permintaan untuk mengirim data gambar.
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];
Di sisi server, saya menerima foto menggunakan kode:
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")
}
Saya tidak tahu apakah saya memiliki masalah di masa depan, tetapi sekarang bekerja dengan baik di lingkungan produksi.