JS将图片文件转为64位字符串再post到接口上传图片
HTML:
<div class="ai-item upload-id-img">
<p>上传身份证照片</p>
<div class="img-box">
<div class="positive-img">
<input type="file" id="img1" name="zm" class="inputFile">
<label for="img1">
<img src="http://pic.biyabi.com/h5/images/fm-img.png" id="preview">
</label>
</div>
<div class="opposite-img">
<input type="file" id="img2" name="fm" class="inputFile">
<label for="img2">
<img src="http://pic.biyabi.com/h5/images/zm-img.png" id="preview2">
</label>
</div>
</div>
</div>
可以通过给input上传控件设置样式不显示,给对应的的img标签注册点击事件来点击上传控件,相当于间接点击了上传控件
.inputFile {
width: 1px;
height: 1px;
opacity:;
overflow: hidden;
position: absolute;
z-index: -1;
}
js 实现:
//编辑页面上传图片
$('#img1').on('change', function () {
setImgPreview('img1', 'preview');
});
$('#img2').on('change', function () {
setImgPreview('img2', 'preview2');
});
//上传图片
function setImgPreview(imgObj, prev) {
var docObj = $("#" + imgObj);
var imgObjPreview = $("#" + prev);
//异步上传图片
uploadImage(docObj, imgObjPreview)
}
function uploadImage(docObj, imgObjPreview) {
//判断是否有选择上传文件
var imgPath = docObj.val();
if (imgPath == "") {
//alert("请选择上传图片!");
hDialog.show({ type: 'toast', toastText: '请选择上传图片!', toastTime: 3000, hasMask: false });
return;
}
//判断上传文件的后缀名
var strExtension = imgPath.substr(imgPath.lastIndexOf('.') + 1).toLowerCase();
if (strExtension != 'jpg' && strExtension != 'gif'
&& strExtension != 'png' && strExtension != 'bmp') {
//alert("请选择图片文件!");
hDialog.show({ type: 'toast', toastText: '请选择图片文件!', toastTime: 3000, hasMask: false });
return;
}
var ImgObj = new Image(); //建立一个图像对象
var AllowImgFileSize = 2100000; //上传图片最大值(单位字节)( 2 M = 2097152 B )
ImgObj.src = docObj[0].value;
//checkSizeofImg();
//function checkSizeofImg() {
// if (ImgObj.readyState != "complete") { //如果图像是未加载完成进行循环检测
// setTimeout("checkSizeofImg()", 500);
// //return false;
// }
//}
//ImgObj.onload = function () {
// ImgFileSize = Math.round(ImgObj.fileSize / 1024 * 100) / 100;//取得图片文件的大小
// if (AllowImgFileSize != 0 && AllowImgFileSize < ImgFileSize) {
// hDialog.show({ type: 'toast', toastText: '上传失败,请上传不大于2M的图片!', toastTime: 3000, hasMask: false });
// return;
// }
//}
//var file = $("#" + imgObj).files[0];
var reader = new FileReader();
var file = docObj[0].files[0];
var imgUrlBase64;
if (file) {
//将文件以Data URL形式读入页面
imgUrlBase64 = reader.readAsDataURL(file);
reader.onload = function (e) {
//var result = document.getElementById("result");
var ImgFileSize = reader.result.substring(reader.result.indexOf(",") + 1).length;
if (AllowImgFileSize != 0 && AllowImgFileSize < ImgFileSize) {
hDialog.show({ type: 'toast', toastText: '上传失败,请上传不大于2M的图片!', toastTime: 3000, hasMask: false });
return;
}
//显示文件
imgObjPreview.attr("src", reader.result);
//字符串形式上传 //data:image/png;base64,
var imgDataBase64 = imgObjPreview.attr("src").substring(imgObjPreview.attr("src").indexOf(",") + 1);
$.ajax({
type: 'post',
dataType: 'json',
data: { "_Image": imgDataBase64, "_format": "." + strExtension },
url: ajaxUrl + 'UploadIDCartImageBase64',
success: function (data) {
if (data) {
imgObjPreview.attr("src", data);
$("." + docObj.attr("name")).val(data);
docObj.parent().find('.logo-img2').remove();
}
},
//此接口返回的图片路径是error的响应文本
error: function (xhr) {
imgObjPreview.attr("src", xhr.responseText);
$("." + docObj.attr("name")).val(xhr.responseText);
docObj.parent().find('.logo-img2').remove();
},
beforeSend: function () {
var logoImg = '<img src="../images/loanding.gif" class="logo-img2" style="position: absolute;left: 50%;top: 50%;width: 20px; height: 20px; -webkit-transform: translate(-50%,-50%);">';
docObj.parent().append(logoImg);
}
});
}
reader.onerror = function () {
alert("error");
}
}
}
最终展示图

JS将图片文件转为64位字符串再post到接口上传图片的更多相关文章
- js如何将选中图片文件转换成Base64字符串?
如何将input type="file"选中的文件转换成Base64的字符串呢? 1.首先了解一下为什么要把图片文件转换成Base64的字符串 在常规的web开发过程中,大部分上传 ...
- 检查DLL,EXE文件是64位或者32位的方法
检查DLL,EXE文件是64位或者32位:输入corflags <assembly path>:
- .netcore 文件上传转为base64位字符串
.netcore文件上传Api接口,和正常的webForm提交类似,只是用postman测试接口时,记得给form表单命名,否则获取上传文件数量一直为0 后端代码 using System; usin ...
- js 将图片文件转换成base64
1.情景展示 在JavaScript中,如何使用图片文件转换成base64? 2.解决方案 /** * 网络图像文件转Base64 * @param img dom对象 */ function g ...
- 利用linux判断elf文件是64位还是32位
readelf 命令,参数为-h 例如 文件名为python >>>readelf -h python 得到的是ELF Header中的项Magic 第五个数 02时为64位,01时 ...
- Android从本地选择图片文件转为Bitmap,并用zxing解析Bitmap
如何从本地选择图片文件 使用Intent调用系统相册后,onActivityResult函数返回的是Uri格式的路径 /** * 打开系统相册 */ private void openSysAlbum ...
- api图片传输,转成64位字符串进行传输
byte[] getImageByte = HttpHelper.getImageByte(HttpContext.Current.Server.MapPath(("~/UploadFile ...
- 64位系统下注册32位dll文件
64位系统下注册32位dll文件 在64位系统里注册32位软件所需的一些dll会提示不兼容,大概因为32 位进程不能加载64位Dll,64位进程也不可以加载32的导致. 若要支持的32 位和64 位C ...
- win7(64位)Sql server 用T-sql读取本地数据文件dbf的数据文件
原文地址:https://www.cnblogs.com/cl1006/p/9924066.html 第一步启用Ad Hoc Distributed Queries 在SQLserver执行以下的语 ...
随机推荐
- 读书笔记 -part1
自从毕业以后到现在~看的书是越来越少了 の其实好像貌似从来没有认认真真的看书 除非工作遇到难于解决的问题迫不得已才去翻书看 有些问题也是莫名其妙的就这样解决了 于是乎被人美名其曰“高人”或&quo ...
- JS判断字符串是否为空、过滤空格、查找字符串位置等函数集
这是一个由网上收集的JS代码段,用于判断指定字符串是否为空,过滤字符串中某字符两边的空格.查找指定字符串开始的位置.使用IsFloat函数判断一 个字符串是否由数字(int or long or fl ...
- [算法]动态规划(Dynamic programming)
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4603173.html Dynamic Programming的Programming指的不是程序而是一种表格 ...
- 高性能Socket组件和RPC,让你像写本地代码一样开发网络应用和分布式程序
最近想试试C#能不能写出高性能的分布式组件,于是写了一个双工RPC,也当练手,下面是单连接的测试结果,非常给力.机器配置:U:E1230-v2,内存:ddr3-8G 1.递归调用 过程:Clie ...
- MySQL添加中文字符集问题 --- java.sql.SQLException: Incorrect string value
今天在做开关记录的时候,数据库表中description字段用于记录当前版本的描述(需要存储中文),在测试程序的时候发现如果用户输入中文,那么后台会报错.错误信息如下: java.sql.SQLExc ...
- Android上传文件之FTP
android客户端实现FTP文件(包括图片)上传应该没什么难度.写下来就了为了记录一下,望能帮到新手. 需要用到 commons-net-3.0.1.jar,后面附上jar包. 直接上代码: /** ...
- IIS Server Farms集群负载
序言 随着公司业务的发展,后台业务就变的越来越多,然而服务器的故障又像月经一样,时不时的汹涌而至,让我们防不胜防.那么后台的高可用,以及服务器的处理能力就要做一个横向扩展的方案,以使后台业务持续的稳定 ...
- Java ConcurrentHashmap 解析
总体描述: concurrentHashmap是为了高并发而实现,内部采用分离锁的设计,有效地避开了热点访问.而对于每个分段,ConcurrentHashmap采用final和内存可见修饰符Volat ...
- Zookeeper为什么总是奇数个
zookeeper有这样一个特性: [集群中只要有超过过半的机器是正常工作的,那么整个集群对外就是可用的] 也就是说如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1 ...
- 详细介绍android rom移植知识普及
详细介绍android rom移植知识普及 最近接到很多兄弟们的求助,也回答过无数个和下面这个问题类似的问题: 如何编译android 原生代码得到一个rom,然后跑到某某手机上. 鉴于很多兄弟对这块 ...