我正在尝试阅读此POST请求并提取图像。然后将其保存到磁盘,但缓冲的图像为空
这是代码(主要部分):
private void handleImage(String target, Request baseRequest, HttpServletRequest request,
HttpServletResponse response) throws Exception{
InputStream inStream = request.getInputStream();
byte[] body = IOUtils.toByteArray(inStream);
InputStream in = new ByteArrayInputStream(body);
BufferedImage bImageFromConvert = ImageIO.read(in);
ImageIO.write(bImageFromConvert, "png", new File(
"hi.png"));
答案 0 :(得分:1)
除非您使用像从闪存发送屏幕截图到服务器的奇特机制,否则用于发送图像的表单可能是多部分/表单数据。 在这种情况下,输入流不仅仅保存二进制图像信息,它是多部分编码的,因此也有一些与文件相关的信息,以及其他表单元素。 以下是输入流的示例输出。当您尝试从该流创建图像时,由于多部分分隔符,它将无法解析。
------WebKitFormBoundaryrD6PkQsxtK9sZGBB
Content-Disposition: form-data; name="test"; filename="test.png"
Content-Type: image/png
[binarydata]
Apache commons有一个库可以解析您可以使用的多部分表单数据。 http://commons.apache.org/proper/commons-fileupload/