Grails Upload example
package org.uris.potholes.web.controllers
import org.uris.potholes.images.ImageReaderService
import org.uris.potholes.models.Pothole
import javax.imageio.ImageIO
import java.awt.image.BufferedImage
class UploadPotholeImageController {
ImageReaderService imageReaderService
private final static String PICTURES_DIR = "/usr/local/code/grails/potholes/pictures"
def index() {
}
def process() {
def file = request.getFile('picture')
if(isEmpty(file)) return
if(isInvalidFile(file)) return
def picDirs = new File(PICTURES_DIR)
if(!picDirs.exists()) {
picDirs.mkdirs()
}
File imageFile = new File(picDirs, file.originalFilename)
file.transferTo(imageFile)
Pothole pothole = imageReaderService.saveImage(imageFile)
[pothole: pothole]
}
private boolean isInvalidFile(def file) {
def invalid = false
def okcontents = ['image/png', 'image/jpeg', 'image/gif']
if (! okcontents.contains(file.getContentType())) {
flash.message = "Picture must be one of: ${okcontents}"
redirect action: 'index'
invalid = true;
}
invalid
}
private boolean isEmpty(def file){
def empty = false
if(file.empty){
flash.message = 'File cannot be empty'
redirect(action: 'index')
empty = true
}
empty
}
}