2013-09-06 1 views
0

내 앱에 내 웹 사이트에 jpg 이미지 파일이 있습니다. 내 GSP에서이미지 파일을 다시 브라우저로 보내기

내가 할 내 ItemConroller의

<img class="itemThumImage border-radius-top-3px" src="${createLink(controller:'item', action:'getImage', id:item.id)}" /> 

내 된 GetImage 조치는 다음과 같습니다

def getImage() { 
    def item = Item.get(params.id) 
    def file = new File(grailsApplication.parentContext.servletContext.getRealPath(item.id)) 

    response.setContentType("image/jpeg") 
    response.setHeader("Content-disposition", "filename=\"${item.id}.jpg\"") 
    response.setContentLength(fileBytes.size()) 
    response.outputStream << file.readBytes() 
    response.outputStream.close() 
} 

이 브라우저에 이미지를 다시 보내는 좋은 방법이 있나요? 이미지가 힙에로드 된 것 같습니다. 어떻게하면이 과정을 가속화 할 수 있습니까? 마지막 줄에 close()이 필요합니까 아니면 flush() 또는 둘 모두입니까?

답변

1

개발/테스트에 적합합니다 (단, 응답을 마치면 return null을 잊지 마십시오).

그러나 결코을 프로덕션 시스템에서 수행하십시오. Nginx 또는 Apache HTTPD 서버와 같이 Tomcat 앞에 프런트 엔드 서버가 필요합니다.

나는 Nginx를 권장합니다. Nginx의 경우 다음 파일을 제공하기 위해 다음 구성을 사용할 수 있습니다.

location /item/getImage/ { 
    alias /path/to/directory/with/images; 
} 

location/{ 
    //proxy to your Tomcat instance 
    proxy_pass http://127.0.0.1:8080; 
} 
+0

Tomcat을 사용하여 제작할 수없는 이유는 무엇입니까? – confile

+0

왜 NGinx가 필요합니까? – confile

+0

왜냐하면 tomcat이 정적 파일을 제공하는 데 1000 배 정도 느리기 때문입니다. –

관련 문제