uniapp微信小程序上传手机内部文件

3,937 阅读2分钟

前言

大家好,我是酱紫,相信大家在做微信小程序中经常碰到文件上传的功能,微信提供了从用户手机相册选取以及拍摄两种选取图片的接口,还有从聊天会话中选取文件的接口,但是还没有从手机资源管理器选取文件的接口。所以本文章就和大家讨论一下实现该功能的“偏门”方案

背景

在这个求职类项目中我负责的是小程序端,其中有个需求是这样的:在个人简历模块中要从手机内部选择word、pdf、照片之类的文件进行上传。但是微信官方并没有提供这个接口。

调研过程

首先看社区讨论

官方的 chooseFile 接口

image.png

image.png 通过以上可以看到,很多人都在等这个接口公开。

web-view

image.png 有这么一个思路,我们在小程序中使用 web-view 内嵌一个单独部署的h5(需要在微信公众平台添加业务域名),使用 input 标签设置 type='file' 来实现这个功能 不过要注意

image.png

解决方法

1.新建vue文件

image.png

写 web-view 标签,官方提供了 @message方法用来网页向应用通信时接收消息

image.png

2.编写html文件

image.png

image.png

要注意这里有个坑

我使用官方提供的 uni.postMessage 时,是没有效果的。
此时更改部分源码(uni.webview.js文件)

image.png

然后再使用webUni,实测可行

3.@message事件方法

image.png

至此,就可以看到我们完成了使用微信小程序实现调取手机内部文件上传

效果

image.png

image.png

这是web-view的内嵌h5页面

image.png

总结

  1. 新建vue文件使用web-view嵌套单独部署的h5页面
  2. h5页面需要在微信公众平台添加业务域名
  3. 在h5中使用input 设置type进行选取文件
  4. 网页在向应用postMessage时,会在后退、销毁时触发
  5. 接收到data后完成

本人资质尚浅,实现过程还较为简陋,请各位大佬不吝赐教。如果你觉得此文对你有一丁点帮助,点个赞,鼓励一下酱紫哈哈