1

我必须将 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();   
    }

我尝试替换编码字符串中的几个字符但没有成功。

4

4 回答 4

0

尝试为您的函数指定URL_SAFE选项。Base64.decode

于 2012-05-20T18:22:55.530 回答
0

base64 'string' 实际上应该是一个字符串数组,或者至少应该有多行,每行最大长度为 76 个字节,由换行符分隔。解码这些行或字符串中的每一个,并将其发送到 OutputStream。

于 2012-05-20T17:43:52.073 回答
0

看看这个代码牧场链接

在客户端以 jpeg 编码并在服务器端解码为 jpg 可能存在一些问题。

于 2012-05-20T17:45:29.187 回答
0

检查客户端和服务器端的Base64字符串。如果不相同,则找出差异。

检查此链接以找出解决方案 Base64 String 丢弃一些数据问题链接

于 2013-09-20T11:16:12.400 回答