Grails保存用户头像照片并在GSP中显示的最佳方式



我应该使用哪个文件夹将用户头像照片保存在Tomcat容器中,以及如何在视图中显示?

我知道它一定在战争文件之外,但我无法访问带有图像标签的图像,该标签在提取的战争文件夹之外。上传和显示用户个人资料照片的示例将不胜感激。

如果它们只是小化身,可以考虑将它们持久化到数据库中。当您需要再次显示它们时,您可以从数据库中获取它们,并将它们写入响应的输出流。

以下是如何做到这一点的示例:

http://grails.1312388.n4.nabble.com/Load-image-from-database-and-show-it-in-a-gsp-td4644393.html

Acually Tomcat不擅长提供静态文件,所以在Java应用程序前面放一个"前端"是很常见的。通常是Nginx服务器。如果你没有使用Nginx,我强烈建议你开始使用它,Nginx可以给你5倍的加速。

使用Nginx,您可以从任何目录存储/和服务器图像:

server {
  location ~ ^/(css|js|images)/.*.(gif|jpg|jpeg|png|ico|css|js)$ {
    root PATH_TO_WEBAPP;
  }
  location ~ ^/avatar/.*$ {
    root PATH_TO_AVATARS;
  }
  location / {
    proxy_pass         http://127.0.0.1:8080;
    proxy_set_header   Host  $host;
    proxy_set_header   X-Forwarded-For $remote_addr;
  }
}

其中:

  • PATH_TO_WEBAPP是tomcat提取您的应用程序的位置(/etc/tomcat/webapps/myapp
  • PATH_TO_AVATARS是用于存储化身的目录(/etc/my_avatars
  • http://127.0.0.1:8080只是在localhost:8080上将所有其他请求转发给Tomcat

因此,您将能够从Grails将化身存储在自己的目录中,并通过Nginx为其提供服务。对于最终用户,它将是一个类似/avatars/myavatar.png的url,因此您可以使用resource标签照常:

<img src="${resource(dir: 'avatars', file: 'myavatar.png')}" />

相关内容

  • 没有找到相关文章

最新更新