मुझे पता है कि यह प्रश्न पुराना है, लेकिन पिछले दिनों मैंने इसी प्रश्न को हल करने के लिए पूरी वेब खोज की थी। मेरे पास अन्य आरईएस वेबसर्विस और आईफ़ोन क्लाइंट हैं जो चित्र, शीर्षक और विवरण भेजते हैं।
मुझे नहीं पता कि मेरा दृष्टिकोण सबसे अच्छा है, लेकिन इतना आसान और सरल है।
मैं UIImagePickerController का उपयोग करके एक तस्वीर लेता हूं और चित्र के डेटा को भेजने के अनुरोध के हेडर टैग का उपयोग करके NSData को सर्वर पर भेजता हूं।
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];
सर्वर साइड पर, मुझे कोड का उपयोग करके फोटो प्राप्त होता है:
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")
}
मुझे नहीं पता कि मुझे भविष्य में समस्या है, लेकिन अब उत्पादन वातावरण में ठीक काम कर रहा है।