在客户端,我使用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但没有去。似乎数据中出现了问题。
感谢。
答案 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)
我们必须从客户端字符串中剥离字符串..详细信息请参阅此帖子..