我必须将 img 从客户端 (JavaScript) 发送到服务器端 Jaxrs 实现。
客户端:
function sendRequest()
{
var url = 'http://localhost:8080/MobilePOC/restService/uploadImage';
$("body").append('<canvas id="theCanvas" style="display:none" width="300px"
height="300px"></canvas>');
var canvas = document.getElementById('theCanvas');
var context = canvas.getContext('2d');
var imageObj = new Image();
imageObj.src = "myjpg.jpeg";
context.drawImage(imageObj, 0, 0, 300, 300);
$.post(url, {'image':canvas.toDataURL("image/jpeg"), 'url':'caption'},
function(file){
//Callback code
alert("done");
});
}
在 JAXRS 的服务器端我正在使用:
它可以工作,但问题是当我将 base64 字符串转换回图像时它不起作用。它正在创建空白图像而不是原始图像。
@POST
@Path("/uploadImage")
@Consumes(MediaType.WILDCARD)
public Response upload(String image) {
System.out.println("In upload:"+image);
Base64 decoder = new Base64();
try {
byte[] imgBytes = decoder.decode(image);
FileOutputStream osf;
osf = new FileOutputStream(new File("C:/yourImage.jpg"));
osf.write(imgBytes);
osf.flush();
osf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// store input somewhere
return Response.ok().build();
}
我尝试替换编码字符串中的几个字符,但没有成功。
最佳答案
base64“字符串”实际上应该是一个字符串数组,或者至少应该有多行,每行最大长度为 76 字节,以换行符分隔。 解码每一行或字符串,并将其发送到 OutputStream。
关于java - 无法使用从浏览器发布的 Base 64 编码字符串创建图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675593/