uniapp在APP平台(Android/iOS)选择非媒体文件
@TOC
背景
在我们APP开发过程中,经常会有这样一个需求场景:从手机中选择文件然后进行上传,这些文件主要分为两类,媒体文件和非媒体文件。而媒体文件选择在APP平台我们可以使用uni.chooseImage和uni.chooseVideo这两个API来实现。但是如果我们想要选择非媒体文件,官方暂时没有提供API给我们,我们只能自己另辟蹊径。记得我之前写过篇文章uniapp多格式文件选择(APP,H5),这里使用的renderjs方式,用一个file类型的input来模拟H5的方式来进行非媒体文件选择。这个也是一种实现方式,但是由于存在逻辑层和视图层的通讯,在文件过大的时候性能不好,所以今天我们介绍另外一种实现方式。
实现
今天实现的方式主要是利用html5plus相关的API来实现(但是目前plus.io.chooseFile这个在IO模块下无法找到),实现非常的简单直接上代码:
plus.io.chooseFile({
title: '选择文件',
filetypes: ['docx', 'zip'],
multiple: false, // 是否允许多选
}, (e) => {
const tempFilePaths = e.files
console.log('11111111',tempFilePaths)
});
然后我们在页面上放一个按钮,加个click事件调用以上代码,这部分比较简单,我就不贴代码了,然后我们看下效果:
可以看到在安卓平台直接拉起了安卓文件管理器来进行选择,但是filetypes这个文件格式的筛选参数这里貌似没起作用,我们选择一个word看下打印:
这里看到已经成功打印出了选择文件的路径。
iOS平台也会拉起文件APP展示文件让用户选择,这里就不贴图了,同样也能打印出选择文件的路径,获取到了文件路径就可以愉快的进行上传了。
尾巴
今天的内容相对简单,只使用了一个API,但是这个API在官方文档中无法找到又确实能用,所以可能有些人不知道,希望能帮助到有需要的人。如果你喜欢我的文章欢迎给我点赞,谢谢!