我应该使用哪个文件夹将用户头像照片保存在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')}" />