dataURL转换txt 预览与下载

有个需求是后端传二进制编码前端实现预览和下载,所以在网上拼凑了这个demo 


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
  <input type="file" onchange="jsReadFiles(this.files)"/>
</body>
<script type="text/javascript">
function dataURLtoFile(dataurl, filename) {
  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 File([u8arr], filename, {
    type: mime
  });
}
var file24324 = dataURLtoFile('data:text/plain;base64,eGluY2h1bg==', 'test.txt');
//js 读取文件
function jsReadFiles(files) {
  if (files.length) {
    var file = files[0];
    readBlobAsDataURL(file, function(dataurl) {
      console.log(dataurl);
    });
    var reader = new FileReader(); //new一个FileReader实例
    if (/text+/.test(file.type)) { //判断文件类型,是不是text类型
      reader.onload = function() {
        $('body').append('<pre>' + this.result + '</pre>');
      }
      reader.readAsText(file);
    } else if (/image+/.test(file.type)) { //判断文件是不是imgage类型
      reader.onload = function() {
        $('body').append('<img src="' + this.result + '"/>');
      }
      reader.readAsDataURL(file);
    }
  }
}

function readBlobAsDataURL(blob, callback) {
  var a = new FileReader();
  a.onload = function(e) {
    callback(e.target.result);
  };
  a.readAsDataURL(blob);
}

function jsReadFiles1(files) {
  var reader = new FileReader(); //new一个FileReader实例
  reader.onload = function() {
    $('body').append('<pre>' + this.result + '</pre>');
  }
  reader.readAsText(files);
}
console.log(file24324)
let data = jsReadFiles1(file24324)
downLoadFile(file24324)

function downLoadFile(data) {
  let url = window.URL.createObjectURL(data); //表示一个指定的file对象或Blob对象
  console.log(url, "看一下这是啥")
  let a = document.createElement("a");
  document.body.appendChild(a);
  // let fileName = msg.headers["content-disposition"].split(";")[1].split("=")[1]; //filename名称截取
  a.href = url;
  a.download = 'test.text'; //命名下载名称
  a.click(); //点击触发下载  
  window.URL.revokeObjectURL(url); //下载完成进行释放
}
</script>
</html>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值