gpt4 book ai didi

java - 如何从 servlet 显示带有图像的 html 文件?

转载 作者:行者123 更新时间:2023-11-30 08:05:53 25 4
gpt4 key购买 nike

我想从我的 servlet 显示一个 html 文件,该 html 文件存储在与我的 web 应用程序不同的服务器中,我当前正在使用 FileInputStream 和 ServletOutputStream 类来使其工作,问题是它不工作显示图像。这是我的 servlet 的代码:

public class DisplayImage extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html");
ServletOutputStream out;
out = response.getOutputStream();
FileInputStream fin = new FileInputStream("C:\\Sistemas\\tendBe.html");

BufferedInputStream bin = new BufferedInputStream(fin);
BufferedOutputStream bout = new BufferedOutputStream(out);
int ch = 0;;
while ((ch = bin.read()) != -1) {
bout.write(ch);
}

bin.close();
fin.close();
bout.close();
out.close();

//This doesn't work, it doesn't take that path.
// RequestDispatcher view = request.getRequestDispatcher("file://C://Sistemas//tendBe.html");

//view.forward(request, response);

}}

这是我的 html 文件:

<html>
<head>
<title>Grafico</title>
</head>
<body>

<h2 style='background-color:Lightgray;'><center>Tendencia Beetle</center> </h2>
<div align='center'><b>Fecha: 25/06/2015<br>
Status: 21:25</b></div>
<center><b> 75</b></div><center>
<br>
<Left><img src='tendBe.png'><Left>
<Left><img src='file:\\C:\\Sistemas\\tendBe.png'><Left>
</body>
</html>

结果,它确实显示了 html 页面,但图像不知何故丢失了。我认为这可能是因为我在 setContentType 中指定了文本并且还发送了图像?你有什么建议吗?另外,使用 getRequestDispatcher 的部分给我带来了麻烦,因为它不接受特定的路径,而且我认为我不会将文件放入应用程序文件夹中。感谢您的帮助。

最佳答案

问题是因为您的网络应用程序文件夹中没有这些文件。生成的 html 仍然指向服务器上 file:\\C:\\Sistemas\\tendBe.png 位置的图像,客户端肯定无法访问该图像。

到目前为止,我的建议是创建另一个 servlet 来读取图像,就像读取 html 一样。同时将 html 中的图像 src 更新为新的图像 servlet url。

或者您可以将图像转换为base64字符串,data url并将其用作html页面中的图像src。这样您就可以跳过创建新图像 servlet 的需要。有几种在线转换图像的工具like .

Using data url
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">

关于java - 如何从 servlet 显示带有图像的 html 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31129327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com