当前位置:   article > 正文

下载和预览文件 ---使用blob二进制大对象_h5预览blob文件流

h5预览blob文件流

blob是一个二进制大对象,和数组类似。可以通过new Blob()来创建。第一个参数传入一个数组,第二个参数是配置对象,可以告诉创建的blob对象里的内容是什么类型的。

可以通过blob.text()方法来读取到内容,他返回的是一个promise,所以想要读取内容需要在他的成功的回调里面去读取

  1. let str = '123'
  2. let blob = new Blob([str], { type: 'text/plain' })
  3. blob.text().then((res) => { console.log(res); })

当给a标签指定了downlad属性的时候,如果它的href指向的地址是同源的,那么就会下载指向地址的资源。不是同源的话会跳转。

所谓访问url地址,其实也就是访问资源。而blob就是二进制资源,可以通过h5新增的一个方法URL.createObjectURL(blob) 来将blob资源转成地址,这样就可以做到下载资源了。

  1. <a id="btn">跳转</a>
  2. <script>
  3. let html = ` <div>
  4. <span>
  5. 这是html
  6. </span>
  7. </div>`
  8. let blob2 = new Blob([html], { type: 'text/html' })
  9. const btn = document.getElementById('btn')
  10. btn.onclick = function (e) {
  11. this.setAttribute('download', '123.html')
  12. this.href = URL.createObjectURL(blob2)
  13. }
  14. </script>

 

下载文件

  1. <input id="file" type="file">
  2. <script>
  3. const file = document.getElementById('file')
  4. file.onchange = function (e) {
  5. const file1 = e.target.files[0]
  6. const a = document.createElement('a')
  7. a.setAttribute('download', 'myBaidu.html')
  8. a.href = URL.createObjectURL(file1)
  9. a.click()
  10. }
  11. </script>

图片预览

使用h5新增的FileReader()方法

  1. <input id="file" type="file">
  2. <script>
  3. const file = document.getElementById('file')
  4. file.onchange = function (e) {
  5. const file = e.target.files[0]
  6. const img = new Image()
  7. const fileRead = new FileReader()
  8. document.body.appendChild(img)
  9. fileRead.onload = function () {
  10. img.src = fileRead.result
  11. }
  12. fileRead.readAsDataURL(file)
  13. }
  14. </script>

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号