【发布时间】:2018-01-10 16:38:20
【问题描述】:
我创建了一个 Java Web 服务器,并尝试发送带有 HTML img 标记的图像。这是部分代码:
try {
socket = server.accept();
System.out.println(socket.getRemoteSocketAddress() + " has connected");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
out.write("HTTP/1.1 200 OK\r\n");
out.write("Content-type: text/html\r\n");
out.write("\r\n");
//problem starts
out.write("<img src=\"file:///Users/Reno/Desktop/MyServer/html/images/GG9/fbicon.jpg\" alt=\"Facebook Icon\">");
out.close();
socket.close();
} catch(Exception e) {
System.out.println(e);
e.printStackTrace();
}
我已经在 img 标签的 src 标签中输入了图像文件的路径。连接工作正常,但图像不显示,而是显示替代文本。在我添加替代文本之前,连接到服务器时,客户端浏览器上只有一个空白页面。
我还尝试将 src 路径更改为"html/images/GG9/fbicon.jpg",而是出现了蓝色框中的问号。然后我再次更改为不存在的 src 路径,例如"fakepath",并且还会出现一个问号。这意味着服务器或客户端必须使用以"file:///" 开头的当前 src 路径读取某些内容。
我该如何解决这个问题,请显示正确的代码。
【问题讨论】:
-
您的浏览器可能不允许混合协议(即您的页面通过 HTTP 提供,而您的图像通过文件协议提供)。如果是这样,那将是一个严重的安全问题。
-
我认为您之前的帖子中提出的 cmets 仍然适用
标签: java html image server webserver