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

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>

 

Vue中预览二进制的Excel和Doc文件可以使用以下两种方法: 1. 使用第三方库:可以使用FileSaver.js和XLSX.js,前者用于下载文件,后者用于解析Excel文件。代码示例: ```javascript import XLSX from 'xlsx' import FileSaver from "file-saver" export function previewExcel(file) { const reader = new FileReader() reader.onload = (e) => { const data = e.target.result const workbook = XLSX.read(data, { type: 'binary' }) const sheetName = workbook.SheetNames[0] const worksheet = workbook.Sheets[sheetName] const sheetData = XLSX.utils.sheet_to_json(worksheet, { header: 1 }) // 在此处使用sheetData渲染表格 } reader.readAsBinaryString(file) } export function previewDoc(file) { FileSaver.saveAs(file) } ``` 2. 使用浏览器内置的Object URL:将文件转换为Blob对象,然后使用URL.createObjectURL()方法生成URL,最后使用iframe或者a标签打开URL即可。代码示例: ```javascript export function previewExcel(file) { const blob = new Blob([file], { type: 'application/vnd.ms-excel' }) const url = URL.createObjectURL(blob) const iframe = document.createElement('iframe') iframe.src = url document.body.appendChild(iframe) } export function previewDoc(file) { const blob = new Blob([file], { type: 'application/msword' }) const url = URL.createObjectURL(blob) const a = document.createElement('a') a.href = url a.download = file.name a.click() } ``` 注意:以上代码示例仅供参考,具体实现需要根据自己的需求进行适当的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值