gpt4 book ai didi

java - Highcharts 和 Java : saving image on server side

转载 作者:行者123 更新时间:2023-12-02 05:31:55 25 4
gpt4 key购买 nike

我正在尝试在服务器端将 Highcharts 图表保存为 png 图像。我发现this link其中显示了如何使用 jQuery 将图像作为字符串提交,以及如何使用 php 生成文件。我正在尝试在服务器端用 Java servlet 替换 php。

servlet 接收字符串并生成 47K 的图像文件,但它是空白的。

servlet 是否正确转换字符串? System.out.println 显示客户端提交的字符串。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String strFile = request.getParameter("bin_data");
strFile.replace(' ', '+');
System.out.println("***"+strFile);
byte[] decoded = DatatypeConverter.parseBase64Binary(strFile);
try (OutputStream stream = new FileOutputStream("d:/abc.png")) {
stream.write(decoded);
}
}

更新:

这是客户端提交图像字符串的 jQuery:

    $("#save_img").click(function(){
var svg = chart.getSVG();
canvg(document.getElementById('canvas'),svg);
var img = canvas.toDataURL("image/png"); //img is data:image/png;base64
img = img.replace('data:image/png;base64,', '');
var data = "bin_data=" + img;
$.ajax({
type: "POST",
url: "/storeimg", // this is the servlet url
data: data,
success: function(data){
alert('success');
}
});
});

图表在哪里

chart = new Highcharts.Chart({
....
....
});

更新:代码与答案中描述的修复程序配合良好

最佳答案

尝试更改此行:

byte[] decoded = Base64.decodeBase64(strFile);

如果您根据请求发送完整图像:

   boolean isMultipart = ServletFileUpload.isMultipartContent(request);
System.out.println("request: "+request);
if (!isMultipart) {
System.out.println("File Not Uploaded");
} else {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = null;

try {
items = upload.parseRequest(request);
System.out.println("items: "+items);
} catch (FileUploadException e) {
e.printStackTrace();
}
}

关于java - Highcharts 和 Java : saving image on server side,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25447331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com