赞
踩
blob是一个二进制大对象,和数组类似。可以通过new Blob()来创建。第一个参数传入一个数组,第二个参数是配置对象,可以告诉创建的blob对象里的内容是什么类型的。
可以通过blob.text()方法来读取到内容,他返回的是一个promise,所以想要读取内容需要在他的成功的回调里面去读取
- let str = '123'
- let blob = new Blob([str], { type: 'text/plain' })
- blob.text().then((res) => { console.log(res); })
当给a标签指定了downlad属性的时候,如果它的href指向的地址是同源的,那么就会下载指向地址的资源。不是同源的话会跳转。
所谓访问url地址,其实也就是访问资源。而blob就是二进制资源,可以通过h5新增的一个方法URL.createObjectURL(blob) 来将blob资源转成地址,这样就可以做到下载资源了。
- <a id="btn">跳转</a>
- <script>
- let html = ` <div>
- <span>
- 这是html
- </span>
- </div>`
- let blob2 = new Blob([html], { type: 'text/html' })
- const btn = document.getElementById('btn')
- btn.onclick = function (e) {
- this.setAttribute('download', '123.html')
- this.href = URL.createObjectURL(blob2)
- }
-
- </script>
下载文件
- <input id="file" type="file">
- <script>
- const file = document.getElementById('file')
- file.onchange = function (e) {
- const file1 = e.target.files[0]
- const a = document.createElement('a')
- a.setAttribute('download', 'myBaidu.html')
- a.href = URL.createObjectURL(file1)
- a.click()
- }
- </script>
使用h5新增的FileReader()方法
- <input id="file" type="file">
- <script>
- const file = document.getElementById('file')
- file.onchange = function (e) {
- const file = e.target.files[0]
- const img = new Image()
- const fileRead = new FileReader()
- document.body.appendChild(img)
- fileRead.onload = function () {
- img.src = fileRead.result
- }
- fileRead.readAsDataURL(file)
- }
- </script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。