如何在Java中向浏览器发送图片

如何在Java中向浏览器发送图片,java,arrays,server,client,byte,Java,Arrays,Server,Client,Byte,我可能一起走错了路。我正在尝试使用我用Java编写的服务器代码向我的FireFox浏览器发送一个.gif或.jpg文件 使用此代码: File pic = new File(pictureFile); byte[] byteContent = Files.readAllBytes(pic.toPath()); //System.out.println("Content: " + Arrays.toString(byteContent)); 我确信我成功地将文件写入了字节数组,因为如

我可能一起走错了路。我正在尝试使用我用Java编写的服务器代码向我的FireFox浏览器发送一个.gif或.jpg文件

使用此代码:

  File pic = new File(pictureFile);
  byte[] byteContent = Files.readAllBytes(pic.toPath());
  //System.out.println("Content: " + Arrays.toString(byteContent));
我确信我成功地将文件写入了字节数组,因为如果取消对System.out.println()行的注释,我的IDE中的内容将读取[-1,-40,-1,-32,0…](依此类推)

当我尝试将图片输出到浏览器时,如下所示:

  os.write("<html><head><title>Not Found</title></head><body>\n".getBytes());
  os.write("<h3>" .getBytes());
  os.write( byteContent);
  os.write(" </h3>\n".getBytes());
  os.write("</body></html>\n".getBytes()); 
os.write(“未找到”\n.getBytes());
write(“.getBytes());
写(字节内容);
写入(“\n”.getBytes());
写入(“\n”.getBytes());

输出是垃圾。我需要做什么?我确信我发送的是正确的HTTP头。

图像数据不能直接放入HTML数据中

您可以用base64对图像进行编码,并用以下方式将其放入HTML代码中:

<img src="data:(file type);base64,(base64 text)">

不能直接在浏览器中显示字节内容。使用以下步骤

步骤1:将字节数组转换为数据url

StringBuilder sb = new StringBuilder();
sb.append("data:image/png;base64,");
sb.append(StringUtils.newStringUtf8(Base64.encodeBase64(byteContent, false)));
String newImage = sb.toString();
第2步:在img标签内使用此标签

os.write("<img src="+newImage+" />");
os.write(“”);

是否可以在不使用必须添加到路径中的包的情况下执行此操作?我离以二进制模式发送图片还远吗?如果可能的话,我宁愿这样做。放弃发送HTML,只发送图像数据(带有适当的HTTP头)怎么样?就像我说的,我迷路了。我不知道最好的方法。我该怎么做迈克?首先,你想做什么?对你来说什么是重要的?不编码发送图像?将浏览器上的标题设置为“未找到”?其他?是否可以在不使用必须添加到路径中的包的情况下执行此操作?我离以二进制模式发送图片还远吗?如果可能的话,我宁愿那样做。
os.write("<img src="+newImage+" />");