Ich weiß, dass diese Frage schon alt ist, aber in den letzten Tagen habe ich das ganze Internet nach einer Lösung für diese Frage durchsucht. Ich habe Grails REST Webservices und iPhone Client, die Bilder, Titel und Beschreibung senden.
Ich weiß nicht, ob mein Ansatz der beste ist, aber er ist so leicht und einfach.
Ich nehme ein Bild mit dem UIImagePickerController und senden Sie an Server die NSData mit den Header-Tags der Anforderung, die Daten des Bildes zu senden.
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];
Auf der Serverseite erhalte ich das Foto unter Verwendung des Codes:
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")
}
Ich weiß nicht, ob ich in Zukunft Probleme habe, aber jetzt funktioniert es in der Produktionsumgebung gut.
3 Stimmen
Wie geht man also am besten vor?
8 Stimmen
Senden Sie die Metadaten im URL-Abfrage-String anstelle von JSON.
0 Stimmen
Eine weitere Frage zu SO .
0 Stimmen
Ist damit Ihre Frage beantwortet? Wie kann ich eine Datei mit Metadaten über einen REST-Webdienst hochladen?