如何使用Image中的数据URI作为InputStream?

我从html5canvas中检索了base64数据uri。 在我的servlet中,我想解码数据uri并将其用作输入流,如下面的“xxx”所示。 以下编码是我将html5canvas中的图像发布到我的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 to base 64 String ,而这个用例是String to Image

查看javax.xml.bind.DatatypeConverter.parseBase64Binary(String)以获取javax.xml.bind.DatatypeConverter.parseBase64Binary(String)byte[]

使用byte[]构造ByteArrayInputStream