【问题标题】:byte stream image not displaying in browser字节流图像未在浏览器中显示
【发布时间】:2016-01-04 21:59:28
【问题描述】:

您好,我想使用 ajax 在浏览器中动态显示服务器端图像。

但图片不会出现。

我已经在调试模式下检查了服务器代码,它工作正常,但不确定客户端代码。

readyState 为 4,但图像未显示。

服务器代码:

 File f = new File("D:\\mapping events\\Camping\\"+(String) request.getParameter("imageName")+"\\"+"01.jpg");
          DataInputStream dis = new DataInputStream(new FileInputStream(f));
          byte[] barray = new byte[(int) f.length()];

          try 
          { 
            dis.readFully(barray);           // now the array contains the image
          }
          catch (Exception e) 
          { 
            barray = null; 
          }
          finally 
          { 
            dis.close( ); 
          }

          sos.write(barray);                 // send the byte array to client

          System.out.println(barray);
          sos.close();

Ajax 代码:

 $.ajax({
            url: 'GetCampingImages',
            type: 'POST',
            data:{
                imageName:allData[0]
            },
            cache: true,
            dataType: 'json',
           success: function(jqXHR)
           {
            if(jqXHR)
            {
                if (jqXHR.readyState == 4) {
                $('#dynamicCamping01').html('<img src="data:image/jpeg;'+jqXHR.reresponseText+'"/> ');
                $('#dynamicCampingDesc01').html("<h3>"+allData[0]+"</h3>");
            }
            }
            else
            {
                alert("Something went wrong while retriving events");
            }
        },
        error: function(jqXHR)
        {

           console.log('ERRORS in server: ' );
        }

【问题讨论】:

  • 您可以通过将浏览器指向您要下载的链接来检查您的服务器端代码是否正常工作,您的图像应该显示在浏览器中。我没有检查您的代码,但我认为该问题在服务器端。看看这段代码,例如stackoverflow.com/questions/2979758/…

标签: java ajax image servlets byte


【解决方案1】:

您应该使用 base64 对二进制数据进行编码,并使用以下方案:“data:image/jpeg;base64,...”。对于 jpeg 文件,直接发送数据字节不是一个好主意。

【讨论】:

  • 我没有测试过代码,但我知道你需要使用base64对图像进行编码,以便它是文本。 HTML 需要它是文本。
猜你喜欢
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 2022-07-13
  • 2021-12-02
  • 2021-06-13
  • 1970-01-01
  • 2017-08-11
相关资源
最近更新 更多