【问题标题】:how to write encoded stream in JSON and retrieve back in ajax?如何在 JSON 中编写编码流并在 ajax 中检索?
【发布时间】:2016-04-08 12:20:02
【问题描述】:

我在输入流中获取图像并将其编码为 base64 并使用 JSON 将其发送到客户端 以下是代码sn-p。

服务器端:

 JsonObject myObj = new JsonObject();
    StringBuilder responseStrBuilder = new StringBuilder();
    int ch =0; ;        
    sun.misc.BASE64Encoder encoder= new sun.misc.BASE64Encoder();
    byte[] contents = new byte[5000000];
    int bytesRead = 0;
    String strFileContents;
    while ((bytesRead = bin.read(contents)) != -1) {
        responseStrBuilder.append(encoder.encode(contents).getBytes());
    }
    myObj.addProperty("1",responseStrBuilder.toString());
    out.println(myObj.toString());

客户端ajax代码:

success: function(result)
           {
            if(result)

            {
                $('#dynamicCamping01').html('<img src='+result[Object.keys(result)[0]]+'/>');
                $('#dynamicCampingDesc01').html("<h3>"+allData[0]+"</h3>");
            }
            else
            {
                alert("Something went wrong while retriving events");
            }

在客户端获取数据但图像未显示。

【问题讨论】:

  • 调试,第 1 步:如果你使用浏览器或命令行工具(如 wget 或 curl)直接访问你的 ajax URL,你会得到你期望的 json 吗?如果不是,则您有服务器端问题。如果是,则说明您遇到了客户端问题。
  • @JohnHascall 以 base64 格式获取客户端中的数据,但未显示静止图像这是我的 ajax 代码: - if (jqXHR.readyState == 4) { $('#dynamicCamping01'). html(' '); $('#dynamicCampingDesc01').html("

    "+allData[0]+ "

    "); }

标签: java json ajax base64 bufferedinputstream


【解决方案1】:

这个成功了:

   BufferedInputStream bin = new BufferedInputStream(fin);  

    BufferedOutputStream bout = new BufferedOutputStream(out);  
    int ch =0; ;  

    sun.misc.BASE64Encoder encoder= new sun.misc.BASE64Encoder();
    byte[] contents = new byte[5000000];
    int bytesRead = 0;
    String strFileContents;
    while ((bytesRead = bin.read(contents)) != -1) {
        bout.write(encoder.encode(contents).getBytes());
    }
    bout.close();
    fin.close();
    bin.close();
    out.close();

主要的重要部分是在客户端将图像转换为 UTF-8 和 Base64 解码。

$(imageIDSData[i]).html('<img src="data:image/jpeg;charset=utf-8;base64,'+imageData[i]+'"/> ');
    $(imageNameIDSData[i]).html("<h3>"+allData[i]+"</h3>");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    相关资源
    最近更新 更多