上传图片,预览并保存成blob类型 和 base64

摘要:
使用URL。创建对象URL()<选择图片后;利用FileReader。readAsDataURL()&lt:&lt!inputtype=“file”name=“”id=“file”>//t、 zoukankan.com/szqtiger-p-12097607.html“id=”img“<</html/gt;”数据;

场景: 获取到一个file类型的图片,如果直接在html中预览?这里就是利用html5的新特性,将图片转换为Base64的形式显示出来。有两种方法:

方法一:利用URL.createObjectURL()

<!DOCTYPE html>
<html>
  <head>
    <title>base</title>
  </head>
<body>
  <input type="file" name="" id="file">
  <img src="http://t.zoukankan.com/szqtiger-p-12096707.html" id="img">
<script type="text/javascript">
window.onload = function () {
  let $img = document.getElementById('img')
    file.onchange = function (e) {
      console.log(e.target.files[0])
      let file = e.target.files[0]
      let fileUrl = window.URL.createObjectURL(file)
      $img.src = fileUrl
      img.onload = function () {
      // 手动回收
      URL.revokeObjectURL(fileUrl)
      }
    }
  }
</script>
</body>
</html>

当选择图片后,生成的img src类似"blob:null/4304d4f3-c13b-43e8-83f6-8c80426520ff",能正常显示图片。

方法二: 利用FileReader.readAsDataURL()

<!DOCTYPE html>
<html>
   <head>
      <title>base</title>
   </head>
<body>
    <input type="file" name="" id="file">
    <img src="http://t.zoukankan.com/szqtiger-p-12096707.html" id="img">
<script type="text/javascript">
window.onload = function () {
  let $img = document.getElementById('img')
    file.onchange = function (e) {
      console.log(e.target.files[0])
      let file = e.target.files[0]
      const fr = new FileReader(file)
      fr.readAsDataURL(file)
      fr.onload = function () {
      $img.src = this.result
    }
  }
}
</script>
</body>
</html>

img标签的src将会是像这样:"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABkCAYAAADDhn8LAAA==,能够正常显示。

原文链接:https://juejin.im/post/5b5187da51882519ec07fa41

免责声明:文章转载自《上传图片,预览并保存成blob类型 和 base64》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇KMP算法(推导方法及模板)python 监控主机tcp状态脚本下篇

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

相关文章

HTML页面使用layer弹出框输入数据

javascript中layer是一款近年来备受青睐的web弹层组件,layer.open对弹出框进行输入信息,并处理返回结果。详细介绍http://layer.layui.com/部署:将layer.js文件和skin目录复制到项目的./static/js目录中,在页面中引用js/layer.js <script >function add_...

GCD与莫比乌斯反演的勾当

目录 机房最后一个学懵逼钨丝的人 题目一 链接 式子 注意 代码 题目 链接&&问题 公式 代码 bzoj1101 链接 式子 代码 机房最后一个学懵逼钨丝的人 题目一 链接 题目没找到 求(sum_{1}^{n}sum_{1}^{m}gcd(i,j)) 式子 (sumlimits_{i=1}^{N}suml...

矩阵, 矩阵 , Android基础控件之ImageView

天下文章大家抄,以下所有内容,有来自copy,有来自查询,亦有自己的总结(目的是总结出自己的东西),所以说原创,不合适,说是转载也不恰当,所以我称之为笔记,可惜没有此分类选项,姑且不要脸一点,选择为原创,希望各位看官冷静勿喷,能接受的赞一个,不能接受的速喷赶紧走......(转载请注明出处,没功劳也有苦劳...) 这篇介绍的是Android常用控件之Ima...

python dlib学习(六):训练模型

前言前面的博客都是使用dlib官方提供的训练好的模型,进行目标识别。- python dlib学习(一):人脸检测- python dlib学习(二):人脸特征点标定- python dlib学习(三):调用cnn人脸检测- python dlib学习(四):单目标跟踪- python dlib学习(五):比对人脸直接进入主题吧,这次我们要自己训练一个模型...

redis如何查看主从状态信息master和salve

首先你需要连接上redis [root@localhost src]# ./redis-cli -p 6384 --第一步从客户端命令工具连接redis   127.0.0.1:6384> auth 123456    --输入登录密码,登录  [root@localhost src]# info replication   --使用命令 i...

React组件中对子组件children进行加强

React组件中对子组件children进行加强 问题 如何对组件的children进行加强,如:添加属性、绑定事件,而不是使用<div>{this.props.children}</div>在<div>上进行处理。 前车之鉴 今天写组件遇到这个问题,在网上查阅了很多资料,都说可以使用React.cloneElement...