-1

この POST リクエストを読み取って画像を抽出しようとしています。次にディスクに保存しますが、バッファリングされた画像はnullです

コードは次のとおりです(主要部分):

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"));
4

1 に答える 1

1

スクリーン ショットをフラッシュからサーバーに送信するような高度なメカニズムを使用していない限り、画像の送信に使用するフォームはおそらく multipart/form-data です。この場合、入力ストリームはバイナリ イメージ情報だけを保持するのではなく、マルチパート エンコードされているため、ファイルやその他のフォーム要素に関連する情報も含まれます。入力ストリームの出力例を次に示します。そのストリームからイメージを作成しようとすると、マルチパート セパレーターが原因で解析できません。

------WebKitFormBoundaryrD6PkQsxtK9sZGBB
Content-Disposition: form-data; name="test"; filename="test.png"
Content-Type: image/png

[binarydata]

Apache commons には、使用できるマルチパート フォーム データを解析するためのライブラリが 1 つあります。 http://commons.apache.org/proper/commons-fileupload/

于 2013-10-27T01:24:40.163 に答える