前端上传图片回显并用base64编码,后端做解码储存,存储图片路径在.properties文件中配置(以上传身份证照片为例)
前端页面:
<form id="kycForm" enctype="multipart/form-data">
<input type="hidden" id="hid" name="idPhotoUrl" value=""/>
<input type="hidden" id="hid2" name="idPhotoUrl2" value=""/>
<div class="first-key">
<div> <img src="背景图片路径" alt="" style="width: 100%;height: 100%;margin-top:.3rem;"></div>
<img id="img1" class="img" src="上传按钮样式图片路径" alt=" " >
<input type="file" class="file" placeholder="ICCID" id="fil" name="photo1" accept="img/*" capture="camera">
<span style="margin-top: .5rem;z-index: 99">上传身份证正面照</span> </div>
<div class="first-key">
<div> <img src="背景图片路径" alt="" style="margin-top: .3rem;width: 100%;height: 100%;"></div>
<img id="img2" class="img" src="上传按钮样式图片路径" alt="">
<input type="file" class="file" placeholder="ICCID" id="fil2" name="photo2" accept="img/*" capture="camera">
<span style="margin-top: .5rem">手持身份证反面照</span>
</div>
<div class="btn-center">
<button type="button" id="btn-go" class="btn btn-primary" >提交审核</button>
</div>
</form>
<script>
$(".first-key").on("change", "input[name=photo1]", function() {
$(this).prev().css("opacity","1")
var filePath = $(this).val();//读取图片路径
//将图片的URL赋值与hidden标签内
var fr = new FileReader();//创建new FileReader()对象
var imgObj = this.files[0];//获取图片
fr.readAsDataURL(imgObj);//将图片读取为DataURL
var obj = $(this).prev()[0];//
var arr = filePath.split('\\');
var fileName = arr[arr.length - 1];
$("#img1").removeClass("img");
$("#img1").addClass("img2");
$(this).parent().next().show();
fr.onload = function() {
obj.src = this.result;
//将base64编码后的图片赋值到hidden标签内
$("#hid").val(obj.src);
};
});
$(".first-key").on("change", "input[name=photo2]", function() {
$(this).prev().css("opacity","1")
var filePath = $(this).val();//读取图片路径
//将图片的URL赋值与hidden标签内
var fr = new FileReader();//创建new FileReader()对象
var imgObj = this.files[0];//获取图片
fr.readAsDataURL(imgObj);//将图片读取为DataURL
var obj = $(this).prev()[0];//
var arr = filePath.split('\\');
var fileName = arr[arr.length - 1];
$("#img2").removeClass("img");
$("#img2").addClass("img2");
$(this).parent().next().show();
fr.onload = function() {
obj.src = this.result;
//将base64编码后的图片赋值到hidden标签内
$("#hid2").val(obj.src);
};
});
console.log($("#hid2").val());
</script>
后端代码:
//对字节数组字符串进行Base64解码并生成图片
if (idPhotoUrl == null || idPhotoUrl2 == null) { //图像数据为空
success(false);
}
BASE64Decoder decoder = new BASE64Decoder();
byte[] b =new byte[0] ;
if(idPhotoUrl.contains("data:image/png;base64")){
//Base64解码
b=decoder.decodeBuffer(idPhotoUrl.replace("data:image/png;base64,", ""));
}
if(idPhotoUrl.contains("data:image/jpeg;base64")){
//Base64解码
b=decoder.decodeBuffer(idPhotoUrl.replace("data:image/jpeg;base64,", ""));
}
//idPhotoUrl = idPhotoUrl.replace("data:image/jpeg;base64,", "");
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {//调整异常数据
b[i] += 256;
}
}
//生成jpg图片
Properties prop = new Properties();
InputStream ins = this.getClass().getResourceAsStream("/config/photoUrl.properties");
prop.load(ins);
String imgFilePath = prop.getProperty("PHOTOURL") + UUID.randomUUID() + ".jpg";//新生成的图片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
user.setIdPhotoUrl(imgFilePath);
byte[] b2 =new byte[0] ;
if(idPhotoUrl2.contains("data:image/png;base64")){
//Base64解码
b2=decoder.decodeBuffer(idPhotoUrl2.replace("data:image/png;base64,", ""));
}
if(idPhotoUrl2.contains("data:image/jpeg;base64")){
//Base64解码
b2=decoder.decodeBuffer(idPhotoUrl2.replace("data:image/jpeg;base64,", ""));
}
//idPhotoUrl = idPhotoUrl.replace("data:image/jpeg;base64,", "");
for (int i = 0; i < b2.length; ++i) {
if (b2[i] < 0) {//调整异常数据
b2[i] += 256;
}
}
//生成jpg图片
String imgFilePath2 = prop.getProperty("PHOTOURL") + UUID.randomUUID() + ".jpg";//新生成的图片
OutputStream out2 = new FileOutputStream(imgFilePath2);
out2.write(b2);
out2.flush();
out2.close(); user.setIdPhotoUrl2(imgFilePath2);
properties文件:
PHOTOURL=想放的文件夹绝对路径
前端上传图片回显并用base64编码,后端做解码储存,存储图片路径在.properties文件中配置(以上传身份证照片为例)的更多相关文章
- SpringMVC+HibernateValidator,配置在properties文件中的错误信息回显前端页面出现中文乱码
问题: 后台在springMVC中使用hibernate-validator做参数校验的时候(validator具体使用方法见GOOGLE),用properties文件配置了校验失败的错误信息.发现回 ...
- WebUploader 上传图片回显
/* fileMaxCount 最大文件数 buttonText 按钮文本 multiple 是否多选 */ (function ($) { $.fn.extend({ uploadImg: func ...
- ueditor1.4.3jsp版成功上传图片后却回显不出来与在线管理显示不出图片的解决方案
这是因为路径问题,可以在jsp/config.json这个文件去改路径 通过“imageUrlPrefix”与“imagePathFormat”这两个属性去拼凑路径. “imageUrlPrefix” ...
- Kindeditor上传图片回显不出来
原因之一: 图片成功上传但是回显不出来,这个时候,要检查返回的图片地址是否加了http://这个玩意,不然会将原来的头加上图片返回地址.
- layui 上传图片回显并点击放大实现
1.页面代码布局 <div class="layui-col-xs12 form-group"> <div class="layui-col-xs6&q ...
- Nginx搭建后,图片存储在Tomcat上,前端无法回显图片问题
一.Nginx与Tomcat连接搭建的环境,Nginx设置了前端的访问路径为 (1)前端代码配置: root /usr/local/nginx/html; index index.html index ...
- js实现上传图片回显功能
用到h5技术 <img id="headimg" src="<%=path%>/resources/images/icon4.png" sty ...
- js上传图片回显
$("#file01").change(function(){ var objUrl = getObjectURL(this.files[0]) ; console.log(&qu ...
- php 图片base64编码生成dataurl和保存为图片
<?php header('Content-type:text/html;charset=utf-8'); //读取图片文件,转换成base64编码格式 $image_file = 'aaa.j ...
随机推荐
- Android 音视频深入 二十一 FFmpeg视频剪切
视频剪切我意外的发现上一次的视频压缩的代码能够运行FFmpeg视频剪切的命令,但是不能做视频合并的命令,因为不能读取记录了几个视频的路径的txt文件. 这里我就说直说视频剪切的过程,不说代码,只说lo ...
- CSS可见区域全局居中
top:$(document).scrollTop() + ($(document).height() - $(document).scrollTop())/2,
- python练习小文章-文本爬虫
一入“程”门深四海...... 有学习就得有练习,我来练一个文本爬虫,代码直接写到下面,抓取的是网页图片,简单好学,适合新手练习. 话不多说直接上干货! 1. 目标网址:https://www.jik ...
- Oracle数据库TNS错误解决方法
ORA-12154: TNS:could not resolve the connect identifier specified ,即无法解析指定的连接 标识符.这说明缺少了一个环境变量,TNS_A ...
- Forth 内部解释程序工作流程
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- 命令行运行Android Robotium自动化用例或单元测试用例
本文目录 1.运行所有的测试用例 2.运行单个测试类或某个TestSuite 3.运行某个测试类里面的某个测试方法 4.运行两个不同的测试类或类中的方法 命令行运行Android Robotium自动 ...
- 使用eclipse整合ssh项目的例子--lljf(1)
最近向自己单独做一个基于ssh的项目,来预习和巩固自己的Java基础.找了一个实际生活中的定做衣服的例子来做一做,放到博客上给大家一起分享学习,后边会持续更新项目编写时候遇到的困难和使用的技术等. 1 ...
- webStorm activeCode
https://blog.csdn.net/qq_33183172/article/details/81491183
- 5、AngularJS 直接绑定显示html ($sce、$sanitize服务)
1.直接使用$sce服务(angularjs中:$sce.trustAsHtml($scope.snippet).html:ng-bind-html="snippet") 以下代码 ...
- Spring 基础知识(三)MVC 架构简介
参考博文: http://blog.csdn.net/liangzi_lucky/article/details/52459378 Spring mvc 执行顺序: 过滤器 web.xml 拦截器 ...