Java 将图像文件发送回浏览器
我的应用程序有显示在我的网站上的jpg图像文件 在我的普惠制中,我:Java 将图像文件发送回浏览器,java,spring,servlets,grails,grails-2.0,Java,Spring,Servlets,Grails,Grails 2.0,我的应用程序有显示在我的网站上的jpg图像文件 在我的普惠制中,我: <img class="itemThumImage border-radius-top-3px" src="${createLink(controller:'item', action:'getImage', id:item.id)}" /> 我的ItemConroller的getImage操作是: def getImage() { def item = Item.get(params.id) d
<img class="itemThumImage border-radius-top-3px" src="${createLink(controller:'item', action:'getImage', id:item.id)}" />
我的ItemConroller的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()
}
def getImage(){
def item=item.get(params.id)
def file=新文件(grailsApplication.parentContext.servletContext.getRealPath(item.id))
response.setContentType(“图像/jpeg”)
response.setHeader(“内容处置”,“文件名=\”${item.id}.jpg\”)
response.setContentLength(fileBytes.size())
response.outputStream这对开发/测试很有好处(但不要忘记在关闭响应后返回null
)
但千万不要在生产系统上这样做。您需要在Tomcat前面安装一个前端服务器,比如Nginx或apachehttpd服务器
我推荐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;
}
为什么我不能用Tomcat在生产环境中这样做呢?因为Tomcat在提供静态文件时要慢1000倍