H5页面video强制下载,不打开新页面播放

移动端H5页面video标签,点击按钮下载当前资源

1. 点击下载后ios浏览器页能直接下载,不会打开新页面播放视频。
2. 视频改名。
3. 下载进度显示,不能空屏或者无操作反馈

实现方式思考:

  • 使用a标签进行下载,ios浏览器会打开新页面播放视频,故不采用
  • 使用download.js插件进行下载 部分浏览器不兼容,并且点击按钮下载时,download.js 会先获取文件内容,转为blob,当视频大小比较大的时候,页面等待时间长,并且无进度显示,容易让用户觉得操作失败了或者操作无效。
  • 阿里云后台设置视频格式头为content-disposition:“attachment; filename=fname.ext”,试验下来能够强制操作。
content-disposition

Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME用户代理如何显示附加的文件。Content-disposition其实可以控制用户请求所得的内容存为一个文件的时候提供一个默认的文件名,文件直接在浏览器上显示或者在访问时弹出文件下载对话框。

格式说明: content-disposition = “Content-Disposition” “:” disposition-type *( “;” disposition-parm )

字段说明:Content-Disposition为属性名disposition-type是以什么方式下载,如attachment为以附件方式下载disposition-parm为默认保存时的文件名服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上attachment

关于 content-disposition详情点我

由于阿里云上设置请求头操作比较繁杂,因此想将设置header放在前端或者后端进行操作。
关键步骤 -php
后端请求阿里云视频路径时设置请求头,将视频名称改为所需名称并且返回新的下载地址。

header('content-disposition:attachment;filename='.basename($filename));

前端根据新的下载地址,通过a标签进行下载(由于后端设置为强制下载,所以前端只需要选择一种方式下载就行)。

var a = document.createElement("a");
a.href = '新地址';
$("body").append(a); // 修复firefox中无法触发click
a.click();
$(a).remove();

参考:
header中Content-Disposition的作用与使用方法
PHP如何实现大文件下载?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uniapp是一个跨平台开发框架,可以用于开发H5应用、小程序应用、App应用等。在Uniapp中使用微信授权登录,常常会遇到重定向打开页面却不调用方法的问题。 首先,要实现微信授权登录功能,我们需要使用微信开放平台提供的API,包括获取微信授权登录的code、通过code获取access_token和openid等。 在Uniapp中,我们可以通过调用uni.login()方法来获取微信授权登录的code。一般情况下,我们可以将这个code发送给后端服务器,后端服务器再通过调用微信的API来获取access_token和openid,并返回给前端。 接下来,我们可以在获取到access_token和openid后,通过uni.reLaunch()方法或者uni.redirectTo()方法来进行重定向打开页面。这两个方法都会关闭当前页面,并在打开新页面后调用新页面的onLoad()方法。 如果在重定向打开页面中,不调用方法,可能有以下几个原因: 1. 页面没有定义onLoad()方法:Uniapp中,每个页面都可以定义onLoad()方法来处理页面的初始化逻辑。如果页面没有定义onLoad()方法,重定向打开页面时就不会调用任何方法。 2. 传递的参数有误:在重定向打开页面时,如果有参数需要传递给被打开页面的onLoad()方法,需要确保参数传递正确。可以通过console.log()方法或者使用断点调试来检查参数是否正确。 3. 页面路径错误:如果重定向打开页面路径错误,可能会导致页面无法正常打开。需要确保页面路径的正确性,可以通过调试工具或者手动输入路径来进行验证。 总结起来,Uniapp中实现微信授权登录并重定向打开页面不调用方法的问题,可能是由于页面没有定义onLoad()方法、传递的参数有误或页面路径错误所导致的。需要仔细排查,确保代码逻辑和参数传递正确,才能正常调用方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值