微信小程序提供了一个简单、高效的应用开发框架和丰富的组件及A 为什么手机下载不了图片和视频


微信小程序提供了一个简单、高效的应用开发框架和丰富的组件及A 为什么手机下载不了图片和视频

但长按图片保存还是可以的 。
但也不是完全没办法,微信还是提供了一些API来实现受限的下载功能 。
使用微信的JS-SDK我们可以使用微信提供的JS-SDK去和微信通信,获得一些手机系统的能力 。
官方说法为:
【微信小程序提供了一个简单、高效的应用开发框架和丰富的组件及A 为什么手机下载不了图片和视频】微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包 。
用法就是在页面引入这个jssdk的js文件,然后你就能拿到一个wx的对象 。然后调用config方法,传入appId、签名等信息(这个需要在微信公众号平台获取) 。之后我们就可以通过wx对象的方法去和微信通信,使用手机系统的能力 。
其中有个wx.downloadImage()的方法,是用来下载图片的 。但其实我觉得应该是用来耍猴的 。
该方法不接受一个url参数,而是接受一个serverId 。
serverId从哪来,从另一个方法wx.uploadImage()里面获得 。wx.uploadImage()方法用于上传本地的图片,但上传成功后,回调函数就能拿到一个serverId 。
上传到哪?微信自己的服务器 。如果你想保存到自己公司的服务器,你还得让公司服务器调用多媒体接口,从微信服务器拿回图片 。而且,微信服务器只给你保存3天时间
是的,你能下载的图片的图片来自用户的上传,且只有三天有效期 。另外,下载的图片貌似也不会保存到相册里,而是保存在用户找不到的地方 。
结论就是完全没法用 。
微信小程序小程序提供了一个简单、高效的应用开发框架和丰富的组件及API,帮助开发者在微信中开发具有原生APP体验的服务 。
微信小程序算不上是H5,因为它是微信下的原生程序,只是语法上类似网页开发的那一套 。
微信小程序的HelloWorld项目模板的入口文件为下面代码 。
//app.tsApp<IAppOption({globalData:{},onLaunch(){//展示本地存储能力constlogs=wx.getStorageSync('logs')||[]logs.unshift(Date.now())wx.setStorageSync('logs',logs)//登录wx.login({success:res={console.log(res.code)//发送res.code到后台换取openId,sessionKey,unionId},})},})可以看到,这里同样有一个wx对象 。
但需要注意的是,这个wx对象和JS-SDK的wx是完全不同的东西,千万别混为一谈 。
调用wx.downloadFile()方法并传入一个url就能下载文件 。但有一些限制,比如单次下载大小最大为200M只能访问开发设置配置好的指定域名、域名需ICP备案等 。
下载的文件会保存在一个本地临时路径 。如果是图片,可以再调用wx.saveImageToPhotosAlbum()方法保存到相册 。
讲了半天,这个微信小程序也不是H5啊,如果我的微信小程序通过web-view元素嵌入了一个H5页面,那我这个H5页面是不是会更牛逼一点,是不是可以用小程序的wx对象啊 。
不行 。
尽管是内嵌的H5页面,但其实它和小程序是隔离的,小程序内嵌的H5页面其实和普通的H5页面没有区别,还是得用傻不拉几的JS-SDK 。
讲这么多,主要是想让大家认识到:wx.downloadFile()是微信小程序才能使用的,不可以用到H5上,即使这个H5是内嵌到小程序里的 。
话说回来,为什么微信小程序的能力要比JS-SDK受到的限制小很多呢?
我认为是因为开发者开发的微信小程序是受到微信监管的,发布也需要通过微信的审核,微信也有权限将任何小程序下架 。
所以微信不怕小程序开发者滥用功能,抓到了直接就给你封了 。而用H5页面则是完全开放的,
那么方案是?首先,微信浏览器中的H5页面,我们无法让用户通过点击“下载”按钮来下载图片、视频以及文档文件(pdf、word等),而是打开一个新的页面让你预览 。
但对于其他微信不能预览的文件(如果zip压缩包)来说,则会将其下载下来 。
但是对于展示出来的图片,用户可以长按图片保存下来 。
所以我们的常规方案是:

    推荐阅读