1

画像をサーブレットにアップロードして投稿するために単純なHTMLページを使用してから、画像をbyte []に​​変換し、次のdoPost()メソッドを使用してセッションに保存します。

        response.setContentType("text/html");
        items = upload.parseRequest(request);
    byte[] byteArray = item.get();
    request.getSession().setAttribute("image1", byteArray);

    out.println("<html>");
    out.println("<body onload='javascript:callParent()'>File uploaded successfully.");
    out.println("<img src='/ImageUpload' alt='' id='img2' name='img2' />");
    out.println("</body>");
    out.println("</html>");

imgタグのsrcで同じサーブレットを呼び出し、doGet()でbyte []をセッションに保存し、次のように送り返します。

    response.setContentType("image/jpeg");
    byte[] byteArray =(byte[])request.getSession().getAttribute("image1");
    OutputStream output = response.getOutputStream(); 
    output.write(byteArray);
    output.close();

このコードはMozillaでは正常に機能しますが、IEでは機能しません。赤いXのみが表示されていますが、imgタグは画像サイズに応じて広くなっていますが、何も表示されていません。また、送信ボタンを2回クリックすると、フォームがIEで送信され、他の場合は1回のクリックで送信されます。

IE-8を使用していますが、画像の種類は.JPEGです。Webで検索しようとした設定の問題はありますが、結果はありません。

4

2 に答える 2

0

問題は、出力ストリームを閉じて、ロードを続行できないことです。

于 2012-10-24T20:59:43.277 に答える
0

実際、bodyタグのonload()イベントを使用して、参照ボタンを自動的に開きました。

    <body onload='frm1.imgUpload.click()'>
 <form action="ImgUpload" method="POST" enctype="multipart/form-data" name="frm1"  id="frm1">
    <input type='file' id = 'imgUpload' name = 'imgUpload'  onchange='frm1.submit()' />
</form>
   </body>

しかし、JavaScriptを介してブラウズを開くためのコードを削除すると、IEで正常に動作し始めました。IEとJavaスクリプトの問題がわかりません。手動でブラウズボタンをクリックして、すべてが機能しています。

于 2012-10-25T06:18:09.540 に答える