javascript --- 文件上传即时预览 闭包实现多图片即时预览
- 使用javascript原生功能实现,点击上传文件,然后再网页上显示出来
1. 初级显示
1.1 准备一个input标签和一个img标签
<input type=file id="file">
<img id="preview" src="">
1.2 js代码如下
// 将上传的图片显示到页面上function showUpload() {// 选择文件上传控件var file = document.querySelector('#file')var img = document.querySelector('#preview')// 当用户选择完文件以后file.onchange = function() {// 1.创建文件读取对象var reader = new FileReader()// 用户选择的文件列表// console.log(this.files[0])// 2. 读取文件reader.readAsDataURL(this.files[0])// 3. 监听 onload 事件reader.onload = function() {img.src = reader.result}}}showUpload();
1.3 原理说明:
- img可以根据图片的二进制格式,将图片显示再网页上
FileReader
对象 可以将图片转换成二进制格式.
2. 实现多图片上传并显示.
- 说明一下…没有传递给服务器…即没有存在服务器的磁盘上…仅仅只是再客户端的内存中…关了就没了…
2.1 上传控件和容器的准备
- 先准备html,和一个放图片的容器
<!-- 注意 此处多了multiple -->
<input type="file" id="file" multiple>
<div class="container">
</div>
2.2 js代码思路
- 首先获取input的dom.然后监听它的提交事件
file.onchange
- 上传的图片组可以通过
this.files
访问到. - 根据
this.files
的数量,创建同等数量的img标签document.createElement('img')
- 设置img标签的属性,并追加到container里面
dom.appendChild
- 实现代码如下:
function showMultiUpload() {var file = document.querySelector('#file')var dom = document.querySelector('#imgs')dom.innerHTML = ''file.onchange = function() {for (var i = 0; i < this.files.length; i++) {var img = document.createElement('img')img.width = '100'img.height = '100'var reader = new FileReader()reader.readAsDataURL(this.files[i])reader.onload = function() {img.src = reader.resultdom.appendChild(img)}}}
}
showMultiUpload()
2.2 错误说明
1.上面上传了7张图片,但是在浏览器上面只显示了一张,原因是
2.javascript中的for循环
是同步执行的,而将图片转换成二进制代码的接口readAsDataURL
是异步的
3.因此需要使用闭包来延长参数的作用域
4.使用一个立即执行函数如下:
function showMultiUpload() {var file = document.querySelector('#file')var dom = document.querySelector('#imgs')dom.innerHTML = ''file.onchange = function() {for (var i = 0; i < this.files.length; i++) {var that = this;(function(i) {var img = document.createElement('img')img.width = '100'img.height = '100'var reader = new FileReader()reader.readAsDataURL(that.files[i])reader.onload = function() {img.src = reader.resultdom.appendChild(img)}})(i)}}
}
showMultiUpload()
ps:选择多个文件的时候,需要按住alt
或者shift
javascript --- 文件上传即时预览 闭包实现多图片即时预览相关推荐
- uni-app uni-file-picker文件上传实现拍摄从相册选择获取图片上传文档服务器(H5上传-微信小程序上传)
前言 最近在使用uni-app写H5移动端,有一个从手机拍摄从相册选择获取图片上传到文档服务器功能. 查阅uni-app发现关于上传图片,uni-file-picker文件上传,uni.chooseI ...
- JavaScript 文件上传详解
本文为 Qunar 技术沙龙投稿,版权归原作者所有,未经允许,请勿转载. 原文地址:http://mp.weixin.qq.com/s/KWFyJa06CNXrU8zhSzzQFQ 作者:梁志,201 ...
- axios文件上传 formdata_基于业务场景下的图片/文件上传方案总结
图片/文件上传组是企业项目开发中必不可少的环节之一, 但凡涉及到用户模块的都会有图片/文件上传需求, 在很多第三方组件库(ant desigin, element ui)中它也是基础组件之一. 接下来 ...
- ajax文件插件上传,7 款基于 JavaScript/AJAX 的文件上传插件
本文整理了7款基于JavaScript和AJAX的文件上传插件,这些插件基本上都能实现以下功能: 多文件上传 拖拽操作 实时上传进度 自定义上传限制 希望能为你的开发工作带来帮助. 具有多文件上传.拖 ...
- 【简报】超棒的拖放式文件上传javascript类库:FileDrop
为什么80%的码农都做不了架构师?>>> 日期:2012-8-30 来源:GBin1.com 今天推荐一款来自俄国web开发人员的支持拖放的跨浏览器javascript文件上 ...
- JavaScript实现限制文件上传类型和大小
JavaScript实现限制文件上传类型和大小 <title>文件上传前台控制检测程序 v0.6</title> <style>body,td {font-size ...
- 前后端分离微服务管理系统项目实战SaaS-HRM项目(九)——文件上传与PDF报表入门
文章目录 九.文件上传与PDF报表入门 1.图片上传 <1>.Data URL (1).概述 (2).入门 (3).基本原理 (4).优缺点分析 <2>.实现用户头像上传 2. ...
- WEUI文件上传详解
本文通过我个人设计的系统为案例来教会读者使用weui的uploader,先来看看效果图: 图片上传框 PC端 移动端 首先,微信的官方文档不会一步一步教会你怎么用,但是在其中能发现很多使用的细节,推荐 ...
- php文件上传学习记录
php文件上传学习记录 1.多文件上传及预览功能效果: 代码分两部分: 1.index02.html 2.file_preview.php 1.index02.html: <!DOCTYPE h ...
最新文章
- python使用matplotlib可视化线图(line plot)、自定义可视化图像的四个边框的色彩、可以分别设置矩形每一条边的色彩(change the axis color)
- 王小云计算机,王小云学者主页-科技工作者之家
- 我参与的一个项目的继续总结:技术篇
- 微软提出Layout,多模态任务也有预训练模型啦
- php把文本数据保存为文件格式,word如何保存文件格式为纯文本格式?
- 力软 Learun 是如何验证权限的
- 川崎机器人signal_阳江Kawasaki机器人控制器维修中心
- sql if语句实例
- 前端字体图标的下载与使用
- 845.数组中的最长山脉
- 三个元素的矩阵乘除法
- 5G无线技术基础自学系列 | 时域资源
- 2003sql php_Windows Server 2003下安装PHP +mssql2000
- Movavi Video Suite 使用教程|如何刻录DVD ?使用Movavi Video Suite!
- 打包一个包含手表端应用的手机端APK应用—Ticwear
- IE8:SCRIPT438: 对象不支持“play”属性或方法,audio.play()无法使用
- redis-使用Java代码操作
- python求素数因子_Python入门教程: 素数判断与素因子分解
- 高斯拉普拉斯卷积核去除噪声
- FileZilla连接阿里云服务器
热门文章
- 64位Ubuntu kylin 16.04使用fastboot下载内核到tiny4412开发板
- python安装缺少api怎么办_请问缺少win32api模块该如何解决?
- linux离线安装redmine_Linux 下一款非常好用的翻译软件
- python图片转文字_【收藏】图片转成文字的方法总结,python批量图片转文字信息参考源码...
- ubuntu 16.04 配置Python2.7 和 Python3.5 同时调用OpenCV
- iOS核心动画之CoreAnimation
- FPFH+ICP点云配准
- Inside the C++ Object Model | Outline
- [转]基于Starling移动项目开发准备工作
- UVALive 5903 Piece it together(二分图匹配)