h5实现电子签名
前端需要引入:jSignature.min.js ,jquery-1.9.1.min.js
前端 部分写法:
body内加
<div id="signature"></div>
<img id='img' src="" alt="">
Js :
$(document).ready(function() {
var arguments = {
width: '100%',
height: '40%',
color:'#000',
"decor-color": "transparent",//去除默认画布上那条横线
lineWidth: '3'
};
$("#signature").jSignature(arguments);
});
//重写
function btnCleanUp(){
$("#signature").jSignature("clear");
$("#img").attr("src", "");
}
//保存为图片
function btnGenerateImg() {
if( $("#signature").jSignature('getData', 'native').length === 0) {
alert("请签名后再保存图片!");
return;
}
var sig = $("#signature").jSignature('getData');
$("#img").attr("src", sig);
}
//上传到服务器
function btnUpload(){
if( $("#signature").jSignature('getData', 'native').length === 0) {
alert("请签名后再提交!");
return;
}
var datapair = $("#signature").jSignature("getData", "image");
$.ajax({
url:'https://xxxx/upload',
data:{"imgStr":datapair[1]},
type:'POST',
success:function (data){
alert(data);
},
error:function (data){}
});
}
java 后台实现:
@RequestMapping("/upload")
@ResponseBody // imgStr就是前台发送的data[1]
public String upload(HttpServletRequest request){
try{
String imgStr=request.getParameter("imgStr");
if(StringUtils.isBlank(imgStr)){
return new RespBody(RespBody.Status.ERROR, "未找到需要保存的图片内容");
}
// 文件名称
String s = PKGenerator.generateId();
String fileName = s + ".png";
// 获取路径
String ctxPath = "D:autograph/";
// 创建文件
File dirPath = new File(ctxPath);
if (!dirPath.exists()) {
dirPath.mkdirs();
}
//Base64解码,生成.png图片
BASE64Decoder decoder = new BASE64Decoder();
byte[] decoderBytes = decoder.decodeBuffer(imgStr);
FileOutputStream out = new FileOutputStream(new File(ctxPath+fileName));
out.write(decoderBytes);
out.close();
return fileName; // 返回保存后的文件名称
} catch (Exception e){
logger.error("上传保存图片时报错:{}",e);
return "上传保存图片失败。";
}
}
效果:
h5实现电子签名的更多相关文章
- 旺财速啃H5框架之Bootstrap(五)
在上一篇<<旺财速啃H5框架之Bootstrap(四)>>做了基本的框架,<<旺财速啃H5框架之Bootstrap(二)>>篇里也大体认识了bootst ...
- 旺财速啃H5框架之Bootstrap(四)
上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...
- H5单页面手势滑屏切换原理
H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 ...
- 快速构建H5单页面切换骨架
在Web App和Hybrid App横行的时代,为了拥有更好的用户体验,单页面应用顺势而生,单页面应用简称`SPA`,即Single Page Application,就是只有一个HTML页面的应用 ...
- 07. Web大前端时代之:HTML5+CSS3入门系列~H5 地理位置
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 源码:https://github.com/duniti ...
- 旺财速啃H5框架之Bootstrap(三)
好多天没有写了,继续走起 在上一篇<<旺财速啃H5框架之Bootstrap(二)>>中已经把CSS引入到页面中,接下来开始写页面. 首先有些问题要先处理了,问什么你要学boot ...
- H5程序员如何利用cordova开发跨平台应用
什么是Cordova? Cordova以前也叫PhoneGap,它提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头.麦克风等.Cordova还 ...
- H5项目开发分享——用Canvas合成文字
以前曾用Canvas合成.裁剪.图片等<用H5中的Canvas等技术制作海报>.这次用Canvas来画文字. 下图中"老王考到驾照后"这几个字是画在Canvas上的,与 ...
- 【腾讯Bugly干货分享】H5 视频直播那些事
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57a42ee6503dfcb22007ede8 Dev Club 是一个交流移动 ...
随机推荐
- 基础篇:java.security框架之签名、加密、摘要及证书
前言 和前端进行数据交互时或者和第三方商家对接时,需要对隐私数据进行加密.单向加密,对称加密,非对称加密,其对应的算法也各式各样.java提供了统一的框架来规范(java.security)安全加密这 ...
- C指针与二维数组
先贴上完整的代码: #include<stdio.h> int main(int argc, char *argv[]){ int a[3] [5]={1,2,3,4,5,6,7,8,9, ...
- PTE准备的时候,用英式英语还是美式英语
我自己是按照英式英语准备的,因为PTE的题目都是英式拼写,考生在做SWT题目的时候往往会抄原文中的句子或者关键词,不自觉地就将第一个区分点写成英式的,所以后面再用美式的就会被判错. PTE写作的小分中 ...
- mysql最经典的语句
一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...
- 认清 React 的useState逻辑
useState运行过程解析 function App() { const [n, setN] = useState(0); //使用 myUseState() return ( <div> ...
- [状压DP]炮兵阵地
炮 兵 阵 地 炮兵阵地 炮兵阵地 题目描述 司令部的将军们打算在 N ∗ M N*M N∗M的网格地图上部署他们的炮兵部队.一个 N ∗ M N*M N∗M的地图由 N N N行 M M M列组成, ...
- CSS3新增了哪些新特性
一.是什么 css,即层叠样式表(Cascading Style Sheets)的简称,是一种标记语言,由浏览器解释执行用来使页面变得更为美观 css3是css的最新标准,是向后兼容的,CSS1/2的 ...
- JavaWeb 补充(Cookie&JSP&Session)
1. 会话技术 1. Cookie 2. Session 2. JSP:入门学习 会话技术 1. 会话:一次会话中包含多次请求和响应. * 一次会话:浏览器第一次给服务器资源发 ...
- OAuth2 Token 一定要放在请求头中吗?
Token 一定要放在请求头中吗? 答案肯定是否定的,本文将从源码的角度来分享一下 spring security oauth2 的解析过程,及其扩展点的应用场景. Token 解析过程说明 当我们使 ...
- JFX11+Maven+IDEA 发布跨平台应用的完美解决方案
1 概述 前几天写了两篇关于JFX+IDEA打包跨平台应用的文章,这篇是使用IDEA自带功能打包的,这篇是使用Maven进行打包的,但是效果不太满意,因为从JDK9开始实现模块化,同时JFX部分从JD ...