前端js图片上传

摘要:
前端js图片上传,原理用inputtype="file"获取图片然后把图片转换成base64编码传到后台.图片上传个人资料varuser_img;//图片//把图片转成base64functionpreviewImage{/*file:file控件*prvid:图片预览容器*/vartip="Expectjpgorpngorgif!";//设定提示信息varfilters={"jpeg":"/9j/4","gif":"R0lGOD","png":"iVBORw"}varprvbox=document.getElementById;prvbox.innerHTML="";if{//html5方案for{varfr=newFileReader();fr.onload=function{varsrc=e.target.result;if(!

前端js图片上传,原理用input type="file"获取图片然后把图片转换成base64编码传到后台.

图片上传

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title></title>
</head>
<body>
<!--header-->
<div class="header">
<i id="return"></i>
<h3><span>个人资料</span></h3>
</div>
<form>
<ul class="tab-nav">
</ul>
<div class="form-btn">
<input type="file" onchange="previewImage(this, 'prvid')" >
<div class="prvid"></div>
</div>
</form>
<script>
var user_img; //图片
//把图片转成base64
function previewImage(file, prvid) {
/* file:file控件
* prvid: 图片预览容器
*/
var tip = "Expect jpg or png or gif!"; // 设定提示信息
var filters = {
"jpeg": "/9j/4",
"gif": "R0lGOD",
"png": "iVBORw"
}
var prvbox = document.getElementById(prvid);
prvbox.innerHTML = "";
if(window.FileReader) { // html5方案
for(var i = 0, f; f = file.files[i]; i++) {
var fr = new FileReader();
fr.onload = function(e) {
var src = e.target.result;
if(!validateImg(src)) {
//alert(tip);
alert('图片格式错误');
} else {
alert(src);
showPrvImg(src);
}
}
fr.readAsDataURL(f);
}
} else { // 降级处理
if(!/.jpg$|.png$|.gif$/i.test(file.value)) {
//alert(tip);
mui.toast('图片格式错误');
} else {
showPrvImg(file.value);
}
}
function validateImg(data) {
var pos = data.indexOf(",") + 1;
for(var e in filters) {
if(data.indexOf(filters[e]) === pos) {
return e;
}
}
return null;
}
//图片
function showPrvImg(src) {
var img = document.createElement("img");
img.src = src;
prvbox.appendChild(img);
user_img = src //向后台传输的图片
}
}
</script>
</body>
</html>

免责声明:文章转载自《前端js图片上传》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【转】【测试用例设计】WEB通用测试用例【高速接口-RapidIO】6、Xilinx RapidIO核仿真与包时序分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js前台传数组,java后台接收转list,前后台用正则校验

前台,传参数时,将数组对象转换成json串,后台java收到后用 JSONArray.fromObject 转成集合。 前台js:var params = {"FileNameList": JSON.stringify(fileNames)}; 前台正则校验: var reg = /^[u4e00-u9fa5A-Za-z0-9-]{1,50}.txt$/;...

QCefView实现与JS的交互

Cef主动向JS通信主要有一种方法:首先在Cef中 QCefEvent event ( const QString& eventName ); //定义一个CEF事件 event.setStringProperty ( const QString& key, const QString& msg ); //为事件添加参数 board...

【转】 JS实现HTML标签转义及反转义

原文地址:http://blog.600km.xyz/2015/12/15/js-encode-html-tags/ 简单说一下业务场景,前台用户通过input输入内容,在离开焦点时,将内容在div中显示。 这时遇到一个问题,如果用户输入了html标签,则在div显示中,标签被解析。 由于是纯前端操作,不涉及后端,因此需要通过js对输入内容进行转义。 这里...

基于NodeJS的全栈式开发

随着不同终端(Pad/Mobile/PC)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本。为了提升开发效率,前后端分离的需求越来越被重视,后端负责业务/数据接口,前端负责展现/交互逻辑,同一份数据接口,我们可以定制开发多个版本。 这个话题最近被讨论得比较多,阿里有些BU也在进行一些...

js~ajax获取后端HTTP状态的几种情况

jquery发起ajax请求到后端接口,后端向前端返回数据,当然也存在后端接口直接重定向(302)到其它接口,然后再向前端返回数据,当然这种情况需要考虑跨域问题。 前端代码 //测试一下http status $.ajax({ type: "get", url: "/redirect",...

vue前端工程化

今日目标 1.能够了解模块化的相关规范 2.了解webpack3.了解使用Vue单文件组件4.能够搭建Vue脚手架5.掌握Element-UI的使用 1.模块化的分类 A.浏览器端的模块化 1).AMD(Asynchronous Module Definition,异步模块定义)代表产品为:Require.js2).CMD(Common Module D...