前端blob 下载视频

export const downloadCrossDomainFile = (url, filename, suffix, start, end, error) => {
    var xhr = new XMLHttpRequest;
    xhr.open('get', url);
    xhr.responseType = 'arraybuffer';
    xhr.onprogress = (event) => {
        // console.log(event);
        if (event.lengthComputable) {
            var loaded = parseInt(event.loaded / event.total * 100);
            start(loaded);
        }
    }
    xhr.onload = function() {
        var link = document.createElement('a');
        // arraybuffer转blob数据,当参数传入就行
        link.href = window.URL.createObjectURL(new Blob([xhr.response], { type: 'video/mp4' }));
        link.download = filename + suffix;
        link.click();
        link.remove();
        end()
    };

    xhr.onerror = () => {
        error(0)
    }
    xhr.send();
}

项目中后端返回的是二进制数据 arraybuffer 

ArrayBuffer的数据,是可以按照字节去操作的,而Blob的只能作为一个整的对象去处理。所以说,ArrayBuffer相比Blob更接近真实的二进制,更底层。

表示二进制类型的大对象,通常是影像、声音或多媒体文件。MySql/Oracle数据库中,就有一种Blob类型,专门存放二进制数据。在 JavaScript 中 Blob 对象表示一个不可变、原始数据的类文件对象,它不一定非得是大量数据,也可以表示一个小型文件的内容。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值