微信浏览器打开H5,点击图片无法下载?

2024-01-13
来源:网络整理

目前手机微信浏览器中打开的H5页面无法通过API下载图片或文件。

为什么在手机默认浏览器中可以下载,但是当我们在微信中打开浏览器时却无法下载呢?

我认为是微信APP的权限问题。 下载权限由当前使用的APP控制。 微信拒绝内置浏览器的文件下载请求。 即使浏览器本身有相应的下载API,但你就是下载不了。

微信为什么要这么做? 因为恐怕会出现和以往常见的浏览器弹窗广告一样的情况。 如果没有图片下载权限的限制,很多营销人员会诱导用户打开一些网页,然后自动下载一些广告图片之类的。

但您仍然可以按住图片进行保存。

但这并非完全不可能。 微信仍然提供了一些API来实现受限下载功能。

使用微信JS-SDK

我们可以使用微信提供的JS-SDK与微信进行通信,获取一些手机系统能力。

官方的说法是:

微信JS-SDK是微信公众平台为网页开发者提供的基于微信的网页开发工具包。

用法就是在页面中引入这个js文件,然后就可以得到一个wx对象。 然后调用该方法,传入签名、签名等信息(这个需要从微信公众号平台获取)。 之后我们就可以通过wx对象方法与微信进行通信,使用手机系统的能力了。

有一个wx.()方法,用于下载图像。 但实际上我认为它应该用来耍猴戏。

此方法不接受 url 参数,但接受一个。

从哪里来的,从另一个方法wx.()获得的。 wx.()方法用于上传本地图片,但上传成功后,回调函数会得到一个。

在哪里上传? 微信自己的服务器。 如果你想保存到公司服务器上,就得让公司服务器调用多媒体接口从微信服务器取回图片。而且,微信服务器只为你保存3天。

是的,您可以下载的图片来自用户上传,并且有效期只有三天。 另外,下载的图片似乎并没有保存在相册中,而是保存在用户找不到的地方。

结论是完全没用。

微信小程序

小程序提供简单高效的应用开发框架和丰富的组件和API,帮助开发者在微信中开发具有原生APP体验的服务。

微信小程序不算H5,因为它是微信下的原生程序,但其语法与Web开发中使用的类似。

微信小程序项目模板的入口文件为以下代码。

// app.ts App<IAppOption>({   globalData: {},   onLaunch() {     // 展示本地存储能力     const logs = wx.getStorageSync('logs') || []     logs.unshift(Date.now())     wx.setStorageSync('logs', logs)     // 登录     wx.login({       successres => {         console.log(res.code)                 // 发送 res.code 到后台换取 openId, sessionKey, unionId       },     })   }, })

可以看到,这里还有一个wx对象。

微信下载方法手机怎么设置_手机微信如何下载安装_手机微信下载方法

但需要注意的是,这个wx对象和JS-SDK的wx是完全不同的东西,所以不要混淆。

可以通过调用 wx.() 方法并传入 url 来下载该文件。 但有一些限制,比如单次最大下载大小为、只能访问开发设置中配置的指定域名、域名需要ICP注册等。

下载的文件将保存在本地临时路径中。 如果是图片,可以调用wx.um()方法将其保存到相册中。

说了半天,这个微信小程序不是H5。 如果我的微信小程序通过web-view元素嵌入一个H5页面,我的H5页面会不会更强大呢? 我可以使用小程序吗? wx 对象。

不。

虽然是内嵌的H5页面,但实际上与小程序是隔离的。 小程序中嵌入的H5页面其实和普通的H5页面没有什么区别。 你还是得用笨蛋的JS-SDK。

我讲这么多主要是为了让大家认识到wx.()只能微信小程序使用,不能在H5上使用,即使这个H5嵌入到小程序中。

话说回来,为什么微信小程序的能力限制比JS-SDK要少很多呢?

我认为是因为开发者开发的微信小程序是由微信监管的,其发布也需要经过微信的审核。 微信也有权下架任何小程序。

因此,微信并不害怕小程序开发者滥用功能。 如果被抓住的话,就会直接被挡住。

那么计划是什么?

微信下载方法手机怎么设置_手机微信如何下载安装_手机微信下载方法

首先,对于微信浏览器中的H5页面,我们不能允许用户通过点击“下载”按钮来下载图片、视频和文档文件(pdf、word等)。 相反,我们将打开一个新页面供您预览。

但对于其他微信无法预览的文件(如果是zip压缩包),则会下载。

但对于显示的图片,用户可以长按图片进行保存。

所以我们常规的解决方案是:

首先需要判断浏览器是否是微信浏览器。 如果不是微信浏览器,下载会保持原来的逻辑。

如果是图片,点击下载按钮时会弹出弹窗,提示用户长按图片进行下载;

如果是视频或文档文件,则提示用户使用默认浏览器下载文件。 考虑到用户使用新浏览器登录比较麻烦,引导用户在默认浏览器中点击右上角打开链接并不是一个好主意。

我们可以在点击下载按钮时复制文件链接,然后让用户打开默认浏览器并粘贴链接进行下载。 这种占用用户剪贴板的行为其实并不好。

或者干脆屏蔽下载按钮,不然会弹出提示说只能在PC上下载。

如果是其他类型的文件,可以下载。

结尾

今天聊聊微信浏览器无法下载图片的一些原因、误区以及解决方法。 希望对您有所帮助。

分享