java - 通过套接字将图像发送到浏览器页面
问题描述
我已经使用 Java 中的 ServerSocket 创建了一个 Web 服务器。
ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept();
PrintWriter os = new PrintWriter(socket.getOutputStream(), true);
os.print("HTTP/1.0 200" + "\r\n");
os.print("Content type: text/html" + "\r\n");
os.print("Content length: " + html.length() + "\r\n");
os.print("\r\n");
os.print(html + "\r\n");
os.flush();
socket.close();
现在,当请求到来时,我可以成功地将 html 页面发送到 Web 浏览器。但我无法将服务器中的图像文件显示到网页
我试过下面的代码
OutputStream outputStream = socket.getOutputStream();
BufferedImage image = ImageIO.read(file);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", byteArrayOutputStream);
byte[] size = ByteBuffer.allocate(4).putInt(byteArrayOutputStream.size()).array();
outputStream.write(size);
outputStream.write(byteArrayOutputStream.toByteArray());
outputStream.flush();
System.out.println("Flushed: " + System.currentTimeMillis());
Thread.sleep(120000);
System.out.println("Closing: " + System.currentTimeMillis());
socket.close();
但是浏览器控制台显示错误
Failed to load resource: net::ERR_INVALID_HTTP_RESPONSE
如何在浏览器页面中显示图像
解决方案
推荐阅读
- javascript - 在 Javascript 中为 JavaScript 元素添加样式
- algorithm - 你将如何合并稀疏矩阵来创建一个新的稀疏矩阵?
- javascript - jQuery获取点击链接的值或文本
- python-3.x - Mac 上的 Anaconda:无法将 Matplotlib 后端设置为 Agg
- android - 未能从 firebase 获取聊天数据到 recyclerview
- android - 使用 Sripe 的 Google Pay:在 Android 中出现意外的开发人员错误
- javascript - Javascript中带有空格的“未定义”变量的字符串连接
- nginx - Nginx 缓存问题与 Expires 标头
- javascript - 使用匹配将正则表达式解析为本地变量
- reactjs - 如何在 Reactjs 标签中使用 jquery