前端图片预览方式

图片预览方法

图片预览现在大多数基于HTML5提供的接口FileReader,而FileReader给我们提供了四个方法
1.readAsArrayBuffer: result属性中二进制数据缓冲区
2.readAsBinaryString: result属性中包含文件原始二进制数据
3.readAsDataURL: result属性中将包含一个data: URL格式的字符串以表示所读取文件的内容.
4.readAsText: result属性中将包含一个字符串以表示所读取的文件内容.

一:其中要实现图片预览需要用readAsDataURL这个方法会将图片转换成base64的模式。之后我们把base64的字符串赋值给img的src属性,就可以实现图片预览代码如下

//html
<label>请选择一个图像文件:</label> 
<input type="file" id="file_input" /> 
//js
 var input = document.querySelector('#file_input');
    input.onchange = function(){
        readfile(input.files[0], (e)=>{
           var src = e.target.result;
           var img = new Image();
                img.src = src;
                document.body.appendChild(img);
            })
         }
         //将图片转换成base64形式
         function readfile(blob, callback){
            var reader = new FileReader();
            reader.onload = callback;
            reader.readAsDataURL(blob);
         }

二: 我么还可以使用对象URL中的方法createObjectURL()来实现图片预览,代码如下

var input = document.querySelector('#file_input');
    input.onchange = function(){
        var img = new Image();
        img.src = window.URL.createObjectURL(input.files[0]);
        document.body.appendChild(img);
    }

三: 我们还可以通过拖拽的方式来实现图片预览,代码如下

      //必须要禁止浏览器默认行为
      drop.ondragenter = function(e){
          e.preventDefault();
      }
      drop.ondragover = function(e){
          e.preventDefault();
      }
      drop.onleave = function(e){
          e.preventDefault();
      }
      drop.ondrop = function(e){
          e.preventDefault();
          //获取文件对象数组
          var fs = e.dataTransfer.files;
          var reader = new FileReader();
          reader.onload = function(e){
              var img = new Image();
              img.src = e.target.result;
              //图片宽度和高度设置成拖拽狂框一样
              img.width = drop.clientWidth;
              img.height = drop.clientHeight;
              drop.appendChild(img);
          }
          reader.readAsDataURL(fs[0]);
     }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值