我已经从html5画布中检索了base64数据uri。在我的servlet中,我想解码数据uri并将其用作输入流,如下面的“ xxx”所示。以下代码是我将html5画布中的图像发布到我的facebook帐户中的。我正在使用restfb。
FacebookType publishPhotoResponse = facebookClient.publish("me/photos", FacebookType.class, BinaryAttachment.with("test.jpeg", getClass().getResourceAsStream("xxx")), Parameter.with("message", "Test"));
我该如何实现?谢谢。
更新 越来越近,但仍然无法正常工作!
在我的jsp中:
var d = document.getElementById('img').src; window.location.href = "upload?src=" + d;
在我的servlet中:
String d = req.getParameter("src"); String head = "data:image/jpeg;base64,"; String base64 = d.substring(head.length()-1); byte[] buf = DatatypeConverter.parseBase64Binary(base64); ByteArrayInputStream is = new ByteArrayInputStream(buf); FacebookType publishPhotoResponse = facebookClient.publish("me/photos", FacebookType.class, BinaryAttachment.with("test.jpeg", is), Parameter.with("message", "Test"));
我的编码中是否有任何错误,因为它似乎在servlet内的某处出现了错误。我无法查看错误,因为它正在服务器上运行。
这几乎需要与此答案完全相反的答案!或者至少是相反的。它回答Image到基座64 String,而此用例是String对Image。
Image
String
期待javax.xml.bind.DatatypeConverter.parseBase64Binary(String)得到byte[]的String。
javax.xml.bind.DatatypeConverter.parseBase64Binary(String)
byte[]
使用byte[]构建一个ByteArrayInputStream。
ByteArrayInputStream