java - 无法使用从浏览器发布的 Base 64 编码字符串创建图像

标签 java web-services rest jax-rs

我必须将 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/

相关文章:

java - REST服务和定时消息发送

java - 解析后完成对象

java - JPA在FROM子句中乱序生成sql查询表

web-services - 如何在不安装到服务器的情况下使用 wkhtmltopdf

api - 同一端点的 Multi-Tenancy 实现

java - Jersey:异步请求后立即响应

java - 单选按钮操作监听器中的问题

java - 通过 Web 服务将 .NET 应用程序与 Java/J2EE 应用程序集成

php - iPhone 中的 RESTful Web 服务 : Data not inserted to database

Java REST API : Returning Multiple objects from API Method