Tôi biết câu hỏi này đã cũ, nhưng trong những ngày qua tôi đã tìm kiếm toàn bộ trang web để giải quyết câu hỏi tương tự. Tôi có grails REST webservice và iPhone Client gửi hình ảnh, tiêu đề và mô tả.
Tôi không biết cách tiếp cận của tôi là tốt nhất, nhưng rất dễ dàng và đơn giản.
Tôi chụp ảnh bằng UIImagePickerControll và gửi đến máy chủ NSData bằng các thẻ tiêu đề yêu cầu để gửi dữ liệu của ảnh.
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];
Ở phía máy chủ, tôi nhận được ảnh bằng mã:
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")
}
Tôi không biết mình có vấn đề gì trong tương lai không, nhưng hiện tại đang hoạt động tốt trong môi trường sản xuất.