我应该使用哪个文件夹将用户头像照片保存在 Tomcat 容器中,如何在视图中显示它?
我知道它必须在战争文件之外,但我无法访问带有图像标签的图像,该图像标签在提取的战争文件夹之外。感谢上传和显示用户个人资料照片的示例。
如果它们只是小型化身,您可以考虑将它们持久化到您的数据库中。当您需要再次显示它们时,您可以从数据库中获取它们并将它们写入响应的输出流。
以下是如何执行此操作的示例:
http://grails.1312388.n4.nabble.com/Load-image-from-database-and-show-it-in-a-gsp-td4644393.html
实际上,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;
}
}
在哪里:
/etc/tomcat/webapps/myapp
)/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')}" />