2013-09-28 6 views
0

En essayant d'implémenter quelques photos à télécharger sur ma webapp. Le problème est que j'essaie d'utiliser Imagescalr pour créer des vignettes des photos originales, et Im en utilisant AWS Plugin pour les télécharger dans mon seau. Ainsi, le code que j'ai est le suivant: (supprimé choses qui validations et DonT influencer la question/réponse) es posibleImageScalr + Grails + plugin AWS

def uploadPic() { 
def f = request.getFile('file') 
. 
. 
.  
def s3file = f.inputStream.s3upload(filename) { //this is for the normal photo 
      path "POI/ID/" 
    } 

def imageIn = ImageIO.read(???); //Dont know if I can put the f file here as parameter... do I have to store it somewhere first, call the s3 file, or I can resize on - the - fly? 
BufferedImage scaledImage = Scalr.resize(imageIn, 150); 



//Here I should upload the thumb. How can I call something like what is done for the normal photo? 

Ainsi, les problèmes/questions sont expliquées dans le code, l'espoir que quelqu'un sait comment faire ce. Merci d'avance.

Répondre

2

dans Grails, request.getFile() ne renvoie pas d'objet java.io.File. Vous pouvez utiliser le flux d'entrée pour écrire un fichier mais je ferais probablement quelque chose comme ceci, bien que j'utiliserais des services et casserais un peu plus les choses. Mais cela devrait vous aider à démarrer dans la bonne direction. Considérez cela plus d'une suggestion de flux de travail pseudo-code.

def uploadPic() { 

    def f = request.getFile('file') 
    def tempFile = new File('/some/local/dir/myImage.png') 
    f.transferTo(tempFile) 

    // upload the original image to S3 
    whateverApi.s3Upload(tempFile) 

    def bufferedImage = ImageIO.read(tempFile) 
    def scaledBufferedImage = Scalr.resize(bufferedImage, 150) 

    // write the scaledImg to disk 
    def scaledImage = new File('/some/local/dir/myImage-150.png'); 
    ImageIO.write(scaledBufferedImage, "png", scaledImage); 

    //upload scaled image to S3 
    whateverApi.s3Upload(scaledImage) 

    // clean up 
    tempFile.delete() 
    scaledImage.delete() 

}