【问题标题】:displaying pictures in a jsf page [duplicate]在jsf页面中显示图片[重复]
【发布时间】:2016-03-02 20:52:18
【问题描述】:

我正在使用 EJB(netbeans 和 glassfish 服务器)开发一个 Web 应用程序。我想在我的 jsf 页面上显示图片。这些图片存储在我的磁盘上,我相信我的应用程序无法使用绝对路径访问这些图片。 我一直在互联网上寻找答案,但除了使用 servlet 之外,我没有得到好的结果。 还有另一种方法吗?

【问题讨论】:

  • 使用 primefaces - primefaces.org/showcase/ui/multimedia/graphicImage.xhtml 您可以通过将 fileInputSteam 提供给 DefaultStreamedContent 来显示这些图像。例如 new DefaultStreamedContent(new FileInputStream(new File("C:\Lukas\a.png")), "image/png");您也可以使用omnifaces showcase.omnifaces.org/components/graphicImage 并使用 return new FileInputStream(new File("/path/to/images", filename));
  • @MahendranAyyarsamyKandiar 我读过这个。我正在使用 primefaces,所以解决方案 2) 和 3) 可能没问题,但我不想使用 servlet 和 2. 没有成功。
  • 当然。如果您使用的是 Primefaces,那就太好了。您可以指向 然后在 PostConstruct 方法中将此变量初始化为 myFile = new DefaultStreamedContent(new FileInputStream(new File("C:\Lukas\a.png" )), "图片/png");我的建议是不要在 getter 方法中这样做。它会正常工作。我还有另一种使用 img 标签和 base 64 的方法
  • 该方法将返回一个 DefaultStreamedContent 并且
  • 即使文件很大,将图片存储在网络应用程序中是否是一个好习惯?

标签: file jsf


【解决方案1】:

这取决于这些图片在“磁盘”上的存储位置:

  • 如果图片存储在 Web 应用程序中,Tomcat(或您使用的任何 servlet 容器)将通过 HTTP 使它们可用,您可以使用普通的<img src="path/to/your/image.jpg"> 将它们包含到页面中。
  • 否则,您必须编写代码以使它们通过 http 可用,例如通过 servlet 或使用 p:graphicImage

【讨论】:

  • 在磁盘上,我的意思是图片存储在 Web 应用程序之外。显示网络应用程序中的图片没有问题。将它们存储在网络应用程序中是一种做法吗?图片由用户上传,每个用户可以上传多张图片。
  • 您可能希望将它们放在一个单独的“Web 应用程序”中,这样​​您就可以轻松地更新您的实际应用程序。您还需要验证您接受的文件类型,这样您的服务器就不会通过上传 JSP 被黑客入侵。备份可能是其他需要考虑的事情。除此之外,我认为这会很好。
猜你喜欢
  • 2012-07-08
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多