最近在做ca签名,key验证通过后传图片为base64格式图片,保存至自己服务器 (大概操作)
首先获取的src=“data:image/png;base64,sealBase64(获取到的参数)”
function qr(){
var base64= $('#image').attr('src');
//过滤data:URL
var base64Data = base64.replace(/^data:image\/\w+;base64,/, "");
$.ajax({
type: "post",
url:'upload',
data: {
"base64Data":base64Data
},
success: function(result) {//上传成功后的处理
if(result==true){
}
else{
}
},
error: function(msg) {
console.log("Fail");
}
});
};
//java 后端代码
/**
* 上传文件
*/
@RequestMapping(value="/upload",method= {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public Boolean upload(String base64Data,HttpServletRequest request){
boolean flag=false;
// 生成文件路径
String path = request.getSession().getServletContext().getRealPath("\\upload\\"+id+"\\");
System.out.println("路径:"+path);
String files = getFiles(base64Data, path);
if (files == null) {
return flag;
}
flag=true;
return flag;
}
//工具类
/**
* base64解码 创建文件并保存图片
* @param base64Data
* @param path
* @return
*/
public static String getFiles(String base64Data,String path) {
BASE64Decoder decoder = new BASE64Decoder();
// Base64解码
byte[] imageByte = null;
try {
imageByte = decoder.decodeBuffer(base64Data);
for (int i = 0; i < imageByte.length; ++i) {
if (imageByte[i] < 0) {// 调整异常数据
imageByte[i] += 256;
}
}
// 生成文件名
String files = new SimpleDateFormat("yyyyMMddHHmmssSSS")
.format(new Date())
+ (new Random().nextInt(9000) % (9000 - 1000 + 1) + 1000)
+ ".png";
// 生成文件
File tempFile = new File(path, files);
if (!tempFile.getParentFile().exists()) {
tempFile.getParentFile().mkdirs();
}
if (tempFile.exists()) {
tempFile.delete();
}
tempFile.createNewFile();
OutputStream imageStream = new FileOutputStream(tempFile);
imageStream.write(imageByte);
imageStream.flush();
imageStream.close();
return files;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//获取文件夹下的所有文件
@RequestMapping(value = "/getImgs", method = { RequestMethod.GET, RequestMethod.POST })
public ModelAndView getImgs( HttpServletRequest request,HttpServletResponse response) {
String path = request.getSession().getServletContext().getRealPath("\\upload\\"+id+"\\");
ArrayList<String> fileLists=new ArrayList<String>();
fileLists=FileImg.getFiles(path);
mv.getModel().put("fileLists", fileLists);
mv.setViewName("/a/index");
return mv;
}
/**
* 获取文件夹下的所有文件名 工具类里 可以判断下 后缀是png、jpg 什么的 做个筛选 我没有做
*/
public static ArrayList<String> getFiles(String filePath) {
ArrayList<String> fileList = new ArrayList<String>();
File root = new File(filePath);
File[] files = root.listFiles();
if (files == null) {
return fileList;
}
for (File file : files) {
if (file.isDirectory()) {
getFiles(file.getName());
fileList.add(file.getName());
} else {
String picPathStr = file.getName();
fileList.add(picPathStr);
}
}
return fileList;
}
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
//显示
<c:if test="${ fn:length(fileLists) >0}">
<c:forEach var="fileList" items="${fileLists}">
<img src="upload/${id }/${fileList}" />
</c:forEach>
</c:if>
如果有什么问题,请各位大神私信我