图片转换base64数据上传,并且实现预览的简便方法
对于很多新手来说,实现上传图片并且预览功能,都会感到不知所可,然后开始在网站搜索各种各样的图片上传预览插件,但是有的时候我们只是想简单的实现判断格式,以及预览的功能,使用插件的话,会使得项目的资源空间很大,代码臃肿。
下面,我就整理一个小方法实现判断上传格式,大小,以及预览图片的功能,大大的减少了代码量。
思路:点击上传按钮(id=“PhotoFile”),选择文件,触发改变事件,调用base64data函数,调用完毕后,执行回调函数,把返回的base64数据分别赋值到img标签的src 和 隐藏的input 的value 上,这样就实现了图片的预览,并且把隐藏的inout 里面的 base64数据提交到后端就可以了。
html:
<div id="IDPhoto">
<input id="PhotoFile" name="" type="file">
<input hidden id="PhotoData" name="" type="text">
<img class="PhotoImg" src="../images/IDPhotoBG.jpg">
</div>
方法
$(document).ready(function(){ $('body').on('change','#PhotoFile',function(event) {
base64data("PhotoFile",function(data){
$('#PhotoFile').siblings('.PhotoImg').attr('src',data);
$('#PhotoFile').siblings('#PhotoData').val(data);
});
});
}); //图片转换base64数据
function base64data(fileID,clackFn){ //fileID:选取文件的ID,clackFn:回调函数,size:限制的大小(单位M)
var size = arguments[2]?arguments[2]:3;
var file = document.getElementById(fileID);
var arr = ["gif","jpeg","jpg","png"];
var size = 1024*1024*parseInt(size);
var fileContentType = file.value.match(/^(.*)(\.)(.{1,8})$/)[3]; //文件类型
if (file.files && file.files[0]){
var f_size = file.files[0].size; //文件大小
if(arr.join(',').toLowerCase().indexOf(fileContentType.toLowerCase()) != -1){ //检索上传的文件类型是不是在允许的arr数组之内
if(f_size > size){
alert("图片太大,请重新上传",'确定');
file.value="";
return false;
}else {
var reader = new FileReader();
reader.onload = function(evt){
clackFn(evt.target.result);
}
reader.readAsDataURL(file.files[0]);
} } else {
alert("文件格式不匹配,请重新上传",'确定');
}
} else { //兼容IE
alert('请切到高级浏览器,再进行图片上传','确定');
}
}
谢谢阅读,如果能帮到您,请帮忙顶一个,当然喜欢的可以收藏一下,谢谢!~( ̄▽ ̄~)(~ ̄▽ ̄)~
注:转发请注明出处
图片转换base64数据上传,并且实现预览的简便方法的更多相关文章
- jsp+springmvc实现文件上传、图片上传和及时预览图片
1.多文件上传:http://blog.csdn.net/a1314517love/article/details/24183273 2.单文件上传的简单示例:http://blog.csdn.net ...
- [.ashx檔?泛型处理例程?]基础入门#2....FileUpload上传前,预览图片(两种作法--ashx与JavaScript)
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/20/ashx_beginner_02_fileupload_picture_p ...
- java多图片上传--前端实现预览--图片压缩 、图片缩放,区域裁剪,水印,旋转,保持比例。
java多图片上传--前端实现预览 前端代码: https://pan.baidu.com/s/1cqKbmjBSXOhFX4HR1XGkyQ 解压后: java后台: <!--文件上传--&g ...
- web 图片上传实现本地预览
在说上传之前先说说如何替换or美化浏览器自带的简陋上传按钮(自定义自己的上传按钮 如:img): 1.将自定义上传按钮上方添加 input file 框,实现input实现透明处理. 2.对自定义上传 ...
- Ajax上传图片以及上传之前先预览
手头上有几个小项目用到了easyUI,一开始决定使用easyUI就注定了项目整体上前后端分离,基本上所有的请求都采用Ajax来完成.在文件上传的时候用到了Ajax上传文件,以及图片在上传之前的预览效果 ...
- 关于confluence上传文件附件预览查看时出现乱码的问题解决办法
在confluence上传excel文件,预览时发现乱码问题主要是因为再上传文件的时候一般是Windows下的文件上传,而预览的时候,是linux下的环境,由于linux下没有微软字体,所以预览的时候 ...
- confluence上传文件附件预览乱码问题(linux服务器安装字体操作)
在confluence上传excel文件,预览时发现乱码问题主要是因为再上传文件的时候一般是Windows下的文件上传,而预览的时候,是linux下的环境,由于linux下没有微软字体,所以预览的时候 ...
- 图片上传前的预览(PHP)
1.先创建一个file表单域,我们需要用它来浏览本地文件.<form name="form1" id="form1" method="post& ...
- 基于Jcrop的图片上传裁剪加预览
最近自己没事的时候研究了下图片上传,发现之前写的是有bug的,这里自己重新写了一个! 1.页面结构 <!DOCTYPE html> <html lang="en" ...
随机推荐
- WPF: ShowDialog() 切换到其他应用窗口后,再切换回来无法让子窗口总在最上方
按说ShowDialog()是模态窗口,应该在主窗口的上方,但是打开其他应用窗口再切换回来的时候,发现子窗口不见了,主窗口又不能操作. 另外子窗口设置成不在任务栏显示,只能通过Alt-Tab来切换到子 ...
- SAP smartform 实现打印条形码
先在SE73里定义一个新的BARCODE,注意一定要用新的才可以,旧的是打印不出来的. 然后定义一个SMARTFORM的样式,把你定义的BARCODE放到字符样式里面去. 再做SMARTFORM就可以 ...
- popup方法
popup方法: 一.创建一个页面 1.创建url和视图函数:: from django.shortcuts import render def p1(request): return render( ...
- 03Vue事件
Vue提供了事件的绑定,方法写在methods对象中. 绑定dom中有两种方法: 方法一:v-on:click/dblclcick/mouseOver/mouseOut="方法名" ...
- 一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)
前面我们已经介绍了ps/top/stats.Sysdig.Weave Scope.cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了.下面将从五个方面来对比它们之间 ...
- 队列(存储结构数组)--Java实现
/*队列:其实也是一种操作受限的线性表 *特点:先进先出 *队尾指针:负责元素的进队 *队头指针:负责元素的出队 *注意:普通队--容易浪费空间,一般队列使用最多的就是循环队列--指针环绕 *队列的实 ...
- sql执行报错--This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
问题: 不支持使用 LIMIT 子句的 IN/ALL/ANY/SOME 子查询,即是支持非 IN/ALL/ANY/SOME 子查询的 LIMIT 子查询. 解决: 将语句:select * from ...
- mybatis 分页问题 (个人认为算是个bug)
问题描述:相同的查寻条件, 分页显示的结果和.net版本的分页结果数量一样,排序不一样, 不同的页有相同的数据.比如:第2面和第3页都有同一条相同的数据. 核心代码: //自己实现 int total ...
- 套接字(linux相关)
前言:略 一.前因 一切从tcp.udp开始. 众所周知,网络模型一般有两种模型,一种为OSI概念模型(七层),另一种为tcp/ip网络模型(四层). tcp/ip应用层对应OSI的应用层.显示层.会 ...
- LNK4098: 默认库“MSVCRT”与其他库的使用冲突
LNK4098: 默认库"MSVCRT"与其他库的使用冲突 修改的方法:在项目属性中,在连接器-输入选项中,在忽略特定库中添加相应的库,具体添加那些苦请参照下面的表格. 下面的内容 ...