84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
1.目前使用到签字画板,用的第三方js,将签名的字转换成图片,保存成了base64格式,然后添加到了图片的属性中。
想咨询这种情况,我submit到后端PHP,存储到mysql中,mysql设置什么类型?还是转成图片用路径的模式存储。如果存储成base64,后期前台怎么显示数据库中的base64数据。
ringa_lee
最好是转成blob,然后再以图片的形式保存到服务器上,数据库只存储图片的路径。
具体代码如下:
function dataURLtoBlob(url) { var arr = url.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new Blob([u8arr], {type: mime}); }
参数说明:
url 为你的base64字符串
返回值:
Blob对象。
File对象是Blob对象的子类。之所以File可以上传到服务器,是因为继承了Blob。所以你可以直接把Blob当文件传到服务器上。
补充一下,之所以建议用Blob以上传文件的形式发送请求,是因为post请求中 body允许传递的字符长度是有限的,如果你直接把一个base64字符塞到body中,容易出现post请求body太长而导致请求失败
首先, 我不明白, 你看没看过, base64的字符串有多长. 你确定要把每一个图片, 长达数完字符的字符串, 存到MySQL中?如果你真的要存的话, 建议mediumtext. text类型, 都不一定够.
一楼说的blob和text应该都可以,不过要考虑一个问题,就是说提交不能超过1M,上传之前记得裁剪好再上传。
最好是转成blob,然后再以图片的形式保存到服务器上,数据库只存储图片的路径。
具体代码如下:
参数说明:
url 为你的base64字符串
返回值:
Blob对象。
File对象是Blob对象的子类。之所以File可以上传到服务器,是因为继承了Blob。
所以你可以直接把Blob当文件传到服务器上。
补充一下,之所以建议用Blob以上传文件的形式发送请求,是因为post请求中 body允许传递的字符长度是有限的,如果你直接把一个base64字符塞到body中,容易出现post请求body太长而导致请求失败
首先, 我不明白, 你看没看过, base64的字符串有多长. 你确定要把每一个图片, 长达数完字符的字符串, 存到MySQL中?如果你真的要存的话, 建议mediumtext. text类型, 都不一定够.
一楼说的blob和text应该都可以,不过要考虑一个问题,就是说提交不能超过1M,上传之前记得裁剪好再上传。