1

我正在使用简单的 HTML 页面将图像上传和发布到 servlet,然后我将图像转换为 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 中我调用相同的 servlet 并在 doGet() 中获取存储在会话中的字节 [] 并将它们发送回如下:

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

此代码在 Mozilla 中运行良好,但在 IE 中无法运行,仅显示红色 X,但img标签根据图像大小变宽,但未显示任何内容。同样,当我单击提交按钮两次时,表单将在 IE 中提交,而其他表单将一键提交。

我使用的是 IE-8,图像类型为 .JPEG。是否有任何设置问题我试图在网上搜索但没有任何结果。

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>

但是当我删除通过 java 脚本打开浏览的代码时,它开始在 IE 上正常工作我不知道 IE 和 java 脚本有什么问题,现在我手动单击浏览按钮,一切正常。

于 2012-10-25T06:18:09.540 回答