You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java动态生成HTML调用JS展示Base64图片遇语法错误排查

解决动态生成HTML调用JS函数传入Base64字符串的语法错误问题

问题根源

Java动态生成HTML时,直接将Base64字符串作为参数传入displayImage函数,未用引号包裹。Base64字符串长达80k,JS会将其中字符解析为语法片段,触发「unexpected token」语法错误。

解决方案

修改Java拼接HTML的代码,给传入displayImage的Base64字符串添加单引号包裹(标准Base64字符集不含单引号,无需额外转义),确保JS识别其为完整字符串参数。

修改后的Java代码

// Base64生成代码保持不变
String base64Image = Base64.getEncoder().encodeToString(CscmFcnaRes1.getImage()).trim();

// 修正HTML拼接逻辑
StringBuffer sb = new StringBuffer();
sb.append("<A href=\"#\"")
  .append(" onClick=\"displayImage('")
  .append(base64Image)
  .append("')\">查看图片</A>");

验证生成的HTML格式

生成后的HTML需符合以下结构,确保Base64字符串被正确包裹:

<A href="#" onClick="displayImage('JVBERi0xLjMK...(完整Base64内容)...')">查看图片</A>

原代码参考

Java生成Base64代码

String base64Image = Base64.getEncoder().encodeToString(CscmFcnaRes1.getImage()).trim();

原HTML拼接代码(错误版本)

.append("<A href=\"#\"")
.append(" onClick=displayImage(")
.append(base64Image)
.append(">")

JavaScript函数代码

function displayImage(base64Image) {
    var newTab = window.open();   
    newTab.document.open();   
    var isPdf = base64Image.substring(0, 4) === 'JVBER';
    var mimeType = isPdf ? 'application/pdf' : 'image/jpeg';      
    var htmlContent = '<html><body>';
    htmlContent += '<embed width="100%" height="100%" src="data:' + mimeType + ';base64,' + base64Image + '">';
    htmlContent += '</body></html>';      
    newTab.document.write(htmlContent);
    newTab.document.close();
}

补充说明:手动解码Base64字符串可正常查看图片,字符串长度约80k字符;生产环境无法引入新框架,需解决该语法错误实现需求。

内容的提问来源于stack exchange,提问作者Ramanamark Suriyamoorthy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:03:30