我正在尝试在我的机器上显示放置在某个文件夹中的图像。我有一个xhtml页面,我想在其上显示图像。
我尝试使用<h:graphicImage value="C:/images/abc.jpg" />
以及纯HTML标记
<img src="C:/images/abc.jpg" />
但上述情况均无效。
此外我尝试将图像放在WebContent中并试图从那里访问它仍然是徒劳的。我哪里出错?
我正在使用Jboss AS 7.0
答案 0 :(得分:3)
如果您想访问webContent之外的图片,则需要多做一些工作。基本上您有三种选择:使用 servlet , PrimeFaces 或 OmniFaces 。这个问题也在这里得到了回答:
Load images from outside of webapps / webcontext / deploy folder using <h:graphicImage> or <img> tag
我过去遇到过同样的问题,我使用 servlet 解决了这个问题。我用这种方式定义了它
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;
@WebServlet("/images/*")
public class ImageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filename = request.getPathInfo().substring(1);
File file = new File("C:Images/", filename);
response.setHeader("Content-Type", getServletContext().getMimeType(filename));
response.setHeader("Content-Length", String.valueOf(file.length()));
response.setHeader("Content-Disposition", "inline; filename=\"" + filename + "\"");
Files.copy(file.toPath(), response.getOutputStream());
}
}
然后,如果您想显示C:/images/abc.jpg
,请使用
<h:graphicImage value="/images/abc.jpg" />
它对我来说很好。
答案 1 :(得分:1)