前端实现input[type='file']上传图片预览效果
众所周知JavaScript在设计上处于安全角度考虑,是不允许读写本地文件的(原因请自行百度);
但是在实际项目应用中,经常会使用到上传图片,并且可以让用户直接预览图片。对于此种做法有两种方法可以实现:一是前后台交互,后台将图片地址返回前端;
二是,我今天写的内容,使用FileReader对象——允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容;此种方法可以优化图片加载速度,减少方法一占用带宽的问题;
但是,此种方法兼容性存在问题,主要是IE浏览器(ie10以上没问题),本文不在讨论兼容性问题,代码如下:
<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<style type="text/css">
#preview {
display: inline-block;
width: 2.56rem;
height: 2.56rem;
position: relative;
background-image: url(img/iconfont-tianjia.png);
background-repeat: no-repeat;
background-size: cover;
} #file {
width: 100%;
height: 100%;
opacity: 0;
position: absolute;
left: 0;
top: 0;
cursor: pointer;
z-index: 5;
}
</style>
</head>
<body>
<div id="preview">
<input type="file" accept="image/*" id="file" value="" />
</div>
<script type="text/javascript">
var preview = document.querySelector('#preview');
var eleFile = document.querySelector('#file');
eleFile.addEventListener('change', function() {
var file = this.files[0];
// 确认选择的文件是图片
if(file.type.indexOf("image") == 0) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(e) {
// 图片base64化
var newUrl = this.result;
preview.style.backgroundImage = 'url(' + newUrl + ')';
};
}
});
</script>
</body> </html>
直接复用测试即可,FileReader对象是通过将图片url转换成base64格式,然后显示出来。
前端实现input[type='file']上传图片预览效果的更多相关文章
- 一、H5(移动端)前端使用input type=file 上传图片,调用相机和相册
一.H5(移动端)前端使用input type=file 上传图片,调用相机和相册
- vue <input type="file">上传图片、预览、删除
使用原生<input type="file">上传图片.预览.删除:multiple实现可上传多张 参数名 类型 说明 fileTypes Array 文件类型, 默认 ...
- js兼容火狐显示上传图片预览效果
js兼容火狐显示上传图片预览效果[谷歌也适用] <!doctype html> <html> <head> <meta content="text/ ...
- input[type=file]上传图片及转为base64码以及预览
<input type="file" id="imgurl" capture="camera" accept="image/ ...
- input file上传图片预览,非插件
Input标签 <input type="file" name="pic" onchange="changepic(this)" mu ...
- input[type="file"]上传图片并显示图片
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 关于input type=file上传图片的总结
最近比较忙,现在来整理一下近期的成果,方便以后再次使用. 关于图片上传的js 和jq jq $("input").change(function () { var $file = ...
- input type = file 上传图片转为base64
项目背景是做图片识别,接口需要上传图片格式为base64格式的,react项目的相关代码: let reader = new FileReader();reader.readAsDataURL(e.t ...
- input[type=file]样式更改以及图片上传预览
以前知道input[type=file]可以上传文件,但是没用过,今天初次用,总感觉默认样式怪怪的,想修改一下,于是折腾了半天,总算是小有收获. 以上是默认样式,这里我想小小的修改下: HTML代码如 ...
随机推荐
- 日志log配置理解
实际生产中,每天都有大量的日志生成,单个文件(FileAppender)已经不能满足要求,RollingFileAppender继承了FileAppender,并提供了更多的功能: 每天生成一个日志文 ...
- POJ 3177--Redundant Paths【无向图添加最少的边成为边双连通图 && tarjan求ebc && 缩点构造缩点树】
Redundant Paths Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10798 Accepted: 4626 ...
- Linux线程资源限制
- AnyForWeb告诉你什么才是“最好的”编程语言
一被问到最好的编程语言是什么,专家们一定会异口同声的说,'世界上根本没有什么最好的,每一种编程语言都有它存在的意义和价值'. AnyForWeb认为,后半句所阐述的观点全然没错,但最好的也并不是不存在 ...
- linux网络启动报错
报错信息: shutting down interface eth0: error:device "eth0" (/org/freedsktop/networkMaager/Dev ...
- java中文件路径读取
windows下 1)相对路径 public static final String TestDataExcelFilePath="src/omstestdata.xlsx"; 2 ...
- android一个弹出菜单的动画(一)
先上效果图: 先写Layout文件: <?xml version="1.0" encoding="utf-8"? > <RelativeLay ...
- MantisBT 问题分配显示 姓名
MantisBT 在提交问题的时候,系统默认"分配"给备选账号,而不是姓名. 这样在使用的时候很不便. 能够通过改动配置文件来改变,找到MantisBT根文件夹下文件config_ ...
- UVA - 1471 Defense Lines 树状数组/二分
Defense Lines After the last war devastated your country, you - as the ...
- WPF动态控件生成查找不到问题
2012 08 10 遇到此类问题,已经找到解决方案 记录以备后用 动态往界面添加控件 在页面未显示的情况时,虽然对控件增加了id name等属性但是使用 TextBox txtOtherNati ...