ฉันรู้ว่าคำถามนี้เก่า แต่ในวันสุดท้ายฉันค้นหาทั้งเว็บเพื่อแก้ปัญหาเดียวกันนี้ ฉันมีเว็บเซิร์ฟเวอร์ REST และไคลเอนต์ iPhone ที่ส่งรูปภาพชื่อและคำอธิบาย
ฉันไม่รู้ว่าวิธีการของฉันดีที่สุดหรือไม่ แต่ง่ายและเรียบง่าย
ฉันถ่ายภาพโดยใช้ 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")
}
ฉันไม่รู้ว่าฉันมีปัญหาในอนาคต แต่ตอนนี้ทำงานได้ดีในสภาพแวดล้อมการผลิต