2013-09-28 5 views
0

내 webapp에 사진 업로드를 구현하려하고 있습니다. 메신저 문제는 Imagescalr을 사용하여 원본 사진의 엄지 손가락을 만드는 것이고 Im은 AWS 플러그인을 사용하여 이미지를 내 버킷에 업로드하는 것입니다. 그래서, 내가했습니다 코드는 다음과 같다 : 그래서 (질문/추적 할 수없는 가망 대답에 영향을 해달라고 삭제 검증 및 일)ImageScalr + Grails + 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? 

문제/질문 코드를 따라 설명, 사람이하는 방법을 알고 희망 이. 미리 감사드립니다.

답변

2

Grails에서 request.getFile()은 java.io.File 객체를 반환하지 않습니다. 은 파일을 작성하기 위해 입력 스트림을 사용할 수 있지만 서비스를 사용하고 좀 더 많은 것을 해체 하긴하지만이 같은 것을 할 수 있습니다. 그러나 이것은 올바른 방향으로 시작해야합니다. 이보다 더 많은 의사 코드 워크 플로 제안을 생각해보십시오.

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() 

}