JavaScript 实现图片上传前本地预览

图片上传前预览,应该算是一个普遍的需求,很多时候可能选中的图片并不是想要的那张,所以需要上传前预览下。

JS(浏览器中)是一门特殊的语言,它没有直接读写磁盘文件的权限,想要操作文件还得配合 <input type="file"/> 标签,而且通过这个标签获得的 File 对象是只读的,同时也无法获取到此文件所在的路径。那么,该如何显示预览呢?

1. 思路

直接显示路径不行,那就将图片转化成 data URL 或者说 Base64

2. 代码实现

因为使用原生 JS 操作 DOM 过于麻烦,以下示例使用 Vue,但是思路和方法是一样的!

html 部分示例:

<input type="file" @change="fileChange"/>
<img v-if="imgUrl" :src="imgUrl" alt=""/>

script 部分示例:

fileChange(e) {// 选中的文件列表,如果设置了多选,length 可能会大于 1const fileList = e.target.files;if (fileList.length === 0) {this.imgUrl = '';return;}const file = fileList[0];// 使用 FileReader 读取文件对象const reader = new FileReader();// 读取完毕后获取结果reader.onload = event => {this.imgUrl = event.target.result;};// 把文件对象作为一个 dataURL 读入reader.readAsDataURL(file);
}

效果展示:


欢迎转载,转载请注明出处:https://blog.kaguramea.me/archives/js-image-preview

JavaScript 实现图片上传前本地预览相关推荐

  1. iOS学习:调用相机,选择图片上传,带预览功能

    iOS学习:调用相机,选择图片上传,带预览功能 发表于2年前(2013-05-30 21:38)   阅读( 18194) | 评论( 16) 27人收藏此文章,我要收藏 赞3 8月22日珠海 OSC ...

  2. 在BAE搭建的Django中实现图片上传并用jquery预览图片

    在BAE上搭建好了django,如何实现图片上传并预览呢? 想要实现图片上传并不难,但是想看到刚上传的图片,就得在服务器返回上传后图片的url.可是返回数据的话,网页就会重定向.因此想要在上传页面预览 ...

  3. jquery插件:图片上传按比例预览

    js部分是这样的: //**********************图片上传预览插件************************ //作者:IDDQD(2009-07-01) //Email:id ...

  4. java实现文件上传预览_jsp+springmvc实现文件上传、图片上传和及时预览图片

    1.多文件上传:http://blog.csdn.net/a1314517love/article/details/24183273 2.单文件上传的简单示例:http://blog.csdn.net ...

  5. 图片上传并且支持预览

    首先这里先讲一个比较low的 <input type="file" id="file1" οnchange="preview1()"/ ...

  6. input文件框选择本地图片后页面预览图片并获取图片长宽以及大小 图片上传前预览

    前面有转过一篇通过HTML5来实现图片上传前预览 ,现在借助FileReader也实现了这个需求.并且同时还可以获得图片的长宽相素以及图片文件的大小.demo如下: <html> < ...

  7. html之file标签 --- 图片上传前预览 -- FileReader

    记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...

  8. webuploader结合php实现图片上传到本地和保存数据库

    webuploader结合php实现图片上传到本地和保存数据库,核心功能是以下三点: 一.上传前图片预览 二.上传图片到本地文件夹 三.上传图片路径和图片对应的设备编号到mysql数据库 Webupl ...

  9. 2016/4/19 ①单个文件上传 ②上传图片后 预览图片

    1,f1.php <!DOCTYPE html> <htmllang="en"> <head><metacharset="UTF ...

最新文章

  1. 编程方式刷新Squid缓存服务器的五种方法
  2. TP-LINK821N无线网卡拆解分析
  3. php 对象转换成数组,PHP把对象转换为数组的问题
  4. 对于 AttributeError: 'Series' object has no attribute 'sort'的解决办法
  5. 第三周 分队列 mooc 翁恺 c语言
  6. Java:Spring的IOC原理(大白话解释)
  7. ICRA 2021| 基于精确和减少漂移的关注距离的Camera-IMU-UWB融合定位方法
  8. 第二十九节 MT-iBeacon基站关于LightBlue软件的使用
  9. 几种不同格式的json数据及解析
  10. 当刷机工具遇到SetupConnection时的解决方法
  11. 测试知识总结1 —— 测试的分类
  12. python定义接口的关键字_使用*args和**kws指定关键字参数
  13. 如何充分利用点赞功能提升Linkedin账号曝光率和活跃度
  14. 局域网内即时通信软件 ZSCQ -工作进度记录表
  15. 知名爆料者:新款MacBook Air采用类似iMac的多彩设计
  16. 四川高中计算机大赛官网,四川省教育厅关于公布2018年度四川省中小学电脑制作活动评选结果的通知...
  17. cisco 交换机 获取 转发表_思科交换机端口号、终端IP地址和MAC地址的互查
  18. 06oracle视图与物化视图
  19. usb转串口,232电平,TTL电平
  20. c 语言easyx图形库飞机大战的源码

热门文章

  1. [安卓]安装低版本微信
  2. 曾国藩:从30岁起,脱胎换骨
  3. jenkins docker 编译verify出现crash的问题
  4. C语言小游戏->井字棋
  5. SVN提交成功,但是版本库里面的内容没有更新--解决方案
  6. 12月30日goCom社区OSGi Topic大纲和PPT
  7. 【参赛作品78】参加openGauss课程21天学习有感
  8. 老人与海好词100英文带翻译_The_Old_Man_and_The_Sea_老人与海_中英文对照版_(good)
  9. 大数据学前准备--zookeeper详解与集群搭建(保姆级教程)
  10. 我爱粟裕--与针式PKM的注册用户的QQ对话系列[2]