PC微信浏览器点击下载,进行默认浏览器跳转功能,跳转至默认浏览器下载,微信中打开网页点击下载,跳转电脑默认浏览器(解决方式)

 前几天开发遇到这个问题,找了半天没找到解决方式,最终看到这篇文章,整理一下,改改标题。希望可以帮助到需要的同志。

问题:在使用微信内置浏览器打开网页时,无法直接使用普通的open方法来打开非网页内容,如apk文件、pdf文件等。即使采取引导用户选择外部浏览器的方式,仍然会有用户不小心点击下载按钮。如何解决这个问题?

解决方式:根据HTTP协议规范,可以通过配置"Content-Disposition"头部字段来实现文件下载。该字段用于描述文件的展现方式。将需要下载的文件定义为附件("attachment"),就会显示下载窗口供用户下载文件。还可以通过指定默认保存的文件名("filename")来提供更好的用户体验。

在微信内打开外部浏览器时,可以遵循以下步骤实现文件下载:

  1. 首先判断浏览器是否为微信,如果是,则将链接指向一个跳转地址。
  2. 跳转地址返回附件的头部信息,具体内容可以不必处理。这样能够显示下载界面并让用户选择使用外部浏览器打开。
  3. 如果解析跳转地址发现浏览器不是微信,直接将用户重定向到目标网页。
  4. 跳转地址的设计可根据需求进行开发,可以编写一个CGI程序或者使用类似"Content-Disposition"的方式实现。例如,可以使用以下跳转地址:http://www.iot2ai.top/cgi-bin/wxit/open.html,该接口按照以上描述的跳转方式设计。
  5. 解析User-Agent字段判断是否为微信,如果是,则返回附件的头部描述信息,具体内容是目标网址。如果不是微信,说明用户已选择外部浏览器打开,此时使用301重定向到目标网址即可。

最终代码

1、点击下载触发函数

const dowFile = ({ fileUrl, fileName }) => {
	// 微信浏览器跳转默认浏览器进行下载
	const userAgent = navigator.userAgent.toLowerCase()
	if (userAgent.indexOf('micromessenger') !== -1) {
		const url = `http://www.iot2ai.top/cgi-bin/wxit/open.html?${window.location.href}&fileUrl=${fileUrl}&fileName=${fileName}`
		alert(url)
		window.location.href = url
	} else {
		dowanloadpdf(fileUrl, fileName)
	}
}

2、触发了上面函数,就会在默认浏览器再次打开,当前页面,通过路由参数来判断是否直接下载资源。

onMounted(() => {
	let { fileUrl, fileName }: any = route.query
	// 存在代表为微信浏览器跳转至此,进行下载
	if (fileUrl && fileName) {
		dowanloadpdf(fileUrl, fileName)
	}
})

重点!!!-------------------------------------------------下面下面

http://www.iot2ai.top/cgi-bin/wxit/open.html?通过作者提供的这个接口来解决跳转默认浏览器,这个地址在PC微信打开会触发默认浏览器打开,用这个地址带我们自己的网页地址,并且把下载的地址带上,我是这样做的。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值