video 标签在ios上怎么加载二进制流文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了video 标签在ios上怎么加载二进制流文件相关的知识,希望对你有一定的参考价值。

1、简单的AF就有上传的方法

2、上传文件可以用multipart-formdata格式上传,具体看后台接口的配置。这个格式的使用。这是我写的一篇测试,根据微博的一个开放接口测试这种格式的使用。
参考技术A let blob = new Blob([data],
type: 'application/octet-stream'
);// 转化为blob对象
let filename = fileName || 'filename.xls';// 判断是否使用默认文件名
if (typeof window.navigator.msSaveBlob !== 'undefined')
window.navigator.msSaveBlob(blob, filename);
else
var blobURL = window.URL.createObjectURL(blob);// 将blob对象转为一个URL
var tempLink = document.createElement('a');// 创建一个a标签
tempLink.style.display = 'none';
tempLink.href = blobURL;
tempLink.setAttribute('download', filename);// 给a标签添加下载属性
if (typeof tempLink.download === 'undefined')
tempLink.setAttribute('target', '_blank');

document.body.appendChild(tempLink);// 将a标签添加到body当中
tempLink.click();// 启动下载
document.body.removeChild(tempLink);// 下载完毕删除a标签
window.URL.revokeObjectURL(blobURL);

上方为下载Excel文件的一个核心逻辑,需要你自己构建一个函数,将上方代码放入,下面是原理:
1、获取后端传递来的二进制数据流
2、传递到封装的函数当中,需要传递二进制数据和文件名(不传有默认文件名)
3、将二进制数据流包裹成一个new Blob对象
4、将Blob对象转化为一个URL资源地址,这个地址时一个本地地址
5、创建一个a标签,设置隐藏,添加下载属性,添加到body当中,启动下载
6、下载完毕之后,删除a标签
注意事项:
在vue框架当中,数据请求是借助axios的,为此,在发送请求的时候,需要修改responseType,改为arraybuffer,axios默认情况下responseType为json,若是不修改,很可能下载时候会是乱码,或者为null。
---------------------
作者:wxj_web
来源:CSDN
原文:https://blog.csdn.net/wxj_ios/article/details/85004323
版权声明:本文为博主原创文章,转载请附上博文链接!

uni-app video标签打包H5Android上支持播放.m3u8 hls直播流

默认uni-app打包出来的H5在Android上是没法播放.m3u8直播流的,控制台或报错

Uncaught (in promise) DOMException: The element has no supported sources.

可以用hls.js来解决,在App.vue的onLaunch方法中增加加下列代码即可:

// 下面的代码增加对Android H5播放m3u8支持
// #ifdef H5
if (uni.getSystemInfoSync().platform != \'ios\') {
    var script = document.createElement("script");
    script.src = "https://cdn.jsdelivr.net/npm/hls.js@latest";
    script.onload = function() {
        let init = function(video) {
            if (!video.getAttribute(\'hls-inited\')) {
                let hls = null;
                let load = function() {
                    let src = video.src;
                    if (!src || src.indexOf(\'.m3u8\') < 0)
                        return
                    if (!hls) {
                        hls = new Hls();
                        hls.attachMedia(video);
                    }
                    hls.loadSource(src);
                }
                video.addEventListener("error", function() {
                    load();
                }, false);
                video.addEventListener("DOMNodeRemovedFromDocument",function(){
                    if(hls){
                        hls.destroy()
                    }
                }, false);
                video.setAttribute(\'hls-inited\', \'ok\');
            }
        }
        document.getElementsByTagName("video").forEach(init)
        document.body.addEventListener("DOMNodeInserted", function(e) {
            let ele = e.relatedNode;
            if (ele.tagName === \'VIDEO\') {
                init(ele);
            }
            ele.getElementsByTagName("video").forEach(init)
        })
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(script, s);
}
// #endif

以上是关于video 标签在ios上怎么加载二进制流文件的主要内容,如果未能解决你的问题,请参考以下文章

我现在拿到一个二进制文件流的音频文件,通过js怎么把这个音频文件直接播放出去

iOS开发中,将word,excel,pdf等文档的二进制流保存到本地(iPhone或iPad)的问题

java怎么实现读取一个文件,拿到二进制流

在java中怎么将二进制字符串转换为文件流

C++流 文件流 二进制文件流读写

IO流