从Base64字符串保存图像不会打开

时间:2014-12-23 10:42:03

标签: javascript jquery image base64 javax.imageio

在客户端,我使用Jquery将Image从image转换为Base64 String并将其发送回服务器。在服务器上,我按原样存储字符串,当我对图像显示得很好时,它也会渲染回所需的页面。但是,当我在下面使用这个类时,我无法将图像存储在服务器上的磁盘上或使用ImageIO.read或使用输出流,它不会在病房后显示。

public static void saveCompanyLogo(String path,String logo,String comId){
    String s[]=logo.split(";");
    String format=s[0].substring(11);
    File file = new File(path+"SecurePass\\logos\\");
    if (!file.exists()) {
        boolean result = false;

        try{
            File f=new File(path+"SecurePass\\logos\\");
            f.mkdir();
            result = true;
        } catch(SecurityException se){
            //handle it
        }        
        if(result) {    
        }
    }
    byte[] b=Base64.decodeBase64(logo.replaceAll(" ", "+"));
    try (OutputStream stream = new FileOutputStream(path+"SecurePass\\logos\\"+comId+"."+format)) {
        stream.write(b);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }


}

我在Overflow用户的建议下使用replaceAll,但没有去。请帮忙。在上面的代码" logo"包含Base64字符串。我也使用imagereaders使用ImageIO.read但没有去。似乎数据中出现了问题。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用canvas轻松完成。像这样:

var img =document.getElementbyId('image');

function baseImage(img){ // img is the image object
var canvas = document.createElement("canvas");
                canvas.width = img.width;
                canvas.height = img.height;

                // Copy the image contents to the canvas
                var ctx = canvas.getContext("2d");
                ctx.drawImage(img, 0, 0, img.width, img.height);

                // Get the data-URL formatted image
                var dataURL = canvas.toDataURL("image/jpeg");

                return dataURL.replace("data:image/jpeg;base64,", "");
}

答案 1 :(得分:0)

我们必须从客户端字符串中剥离字符串..详细信息请参阅此帖子..

Convert base64 string to image