base64 和blob 上传与互换

转自: https://blog.csdn.net/qq_39364032/article/details/82177456, 只做学习用途,不做他用

1. 图片上传
<input type="file" name="main" id="main" value="" 
accept="image/png, image/jpeg, image/gif, image/jpg" onchange="uploadImg(event)">
//转化为base64格式
uploadImg:function(e){
     var file = e.target.files[0]
     if (!/\.(gif|jpg|jpeg|png|bmp|GIF|JPG|PNG)$/.test(e.target.value)) {
         this.$vux.toast.text('图片类型必须是.gif,jpeg,jpg,png,bmp中的一种', 'middle')
         return false
     }
     var reader = new FileReader()
     reader.readAsDataURL(file)
     reader.onload = (e) => {
         console.log("图片地址" + e.target.result)
         //这里将base64提交到后台
     }
 }

//转为blob格式
uploadImg:function(e){
     var file = e.target.files[0]
     if (!/\.(gif|jpg|jpeg|png|bmp|GIF|JPG|PNG)$/.test(e.target.value)) {
         this.$vux.toast.text('图片类型必须是.gif,jpeg,jpg,png,bmp中的一种', 'middle')
         return false
     }
     var reader = new FileReader()
     reader.readAsArrayBuffer(file)
     reader.onload = (e) => {
       let data
       if (typeof e.target.result === 'object') {
           data = window.URL.createObjectURL(new Blob([e.target.result]))
       } else {
           data = e.target.result
       }
       this.imgsrc = data 
       // 这里是本地预览
       console.log("图片地址:" + data) 
   }
 }
2. 视频上传
<input type="file" accept="video/*" id="video" name="video"  onchange="uploadVideo(event)">
//转为base64格式
uploadVideo(e) {
   	var that = this;
     var video = event.target.files[0];  //选择的文件
     var reader = new FileReader();  
     var rs = reader.readAsDataURL(video);  
     reader.onload = (e) =>{
       var videoSrc= e.target.result; 
       console.log(videoSrc)
       //这里将base64提交到后台
     }       
 }
 
//转为blob格式 
uploadVideo(e) {
  var that = this;
    var video = event.target.files[0];  //选择的文件
    var reader = new FileReader();  
    var rs =  reader.readAsArrayBuffer(video) 
    reader.onload = (e) => {
      let data
      if (typeof e.target.result === 'object') {
          data = window.URL.createObjectURL(new Blob([e.target.result]))
      } else {
          data = e.target.result
      }
      console.log("视频地址" +data)
      // 这里是本地预览
  } 
}
3. base64 和 Blob 相互转换
//Base64 to Blob
//dataurl - data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVYAAAC+CAMAAAB...
function dataURLtoBlob(dataurl) {
    var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
        bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
    while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], { type: mime });
}


//Blob to Base64
function blobToDataURL(blob, callback) {
    let a = new FileReader();
    a.onload = function (e) { callback(e.target.result); }
    a.readAsDataURL(blob);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值