0

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

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

4

2 回答 2

0

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

以下是如何执行此操作的示例:

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

于 2013-07-26T06:10:17.733 回答
0

实际上,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只需将所有其他请求转发到 Tomcatlocalhost:8080

因此,您将能够从 Grails 将头像存储在自己的目录中,并通过 Nginx 提供它们。对于最终用户,它将是一个 url /avatars/myavatar.png,因此您可以 resource像往常一样使用标签:

<img src="${resource(dir: 'avatars', file: 'myavatar.png')}" />
于 2013-07-27T05:48:16.813 回答