在项目中,上传图片时,我们可以 采用Base64存储的方式,在后端直接接受前端传入的Base64码,然后转为图片,存储到服务器
Base64码的组成大概是这样的:图片格式;base64,图片内容
所以首先,我们要对传入的Base64码进行分割处理,获取到他的图片格式以及图片内容
String [] d = base64Data.split("base64,");
if(d != null && d.length == 2){
dataPrix = d[0];//获取到的前缀
data = d[1];//获取到的图片内容
}
然后,将读取到的图片内容转为byte,便于操作,并调整异常数据
byte[] bs = Base64Utils.decodeFromString(data);
for(int i=0;i<bs.length;++i) {
if(bs[i]<0) {
//调整异常数据
bs[i]+=256;
}
}
设置文件路径
String imgFilePath = System.getProperty("user.dir");
imgFilePath = imgFilePath + "/webapps/assets/photo/" + filename;
System.out.println(imgFilePath);
使用apache提供的工具类操作流输出
try{
//使用apache提供的工具类操作流
OutputStream out = new FileOutputStream(imgFilePath);
out.write(bs);
out.flush();
out.close();
}catch(Exception ee){
throw new Exception("上传失败,写入文件失败,"+ee.getMessage());
}
图片就成功保存了!