在使用uniapp开发app过程中,遇到了需要上传pdf、word等文件的场景。uniapp的api要么是不支持app端,要么是android限制应用获取全部文件的权限。好像现在android系统中只有文件管理类的软件才能获得访问全部文件的权限。 这里使用的是plus.io原生api:
const chooseFile = (() => {
if (uni.getSystemInfoSync().platform === 'android' || uni.getSystemInfoSync().platform === 'ios') {
plus.io.chooseFile(
{
filter: '*', //文件类型,*表示全部
multiple: false // 是否多选
},
(res) => {
const fileInfo = res.files[0]; //这里返回的是'/content'型的文件路径,可以直接使用ni.uploadFile来进行上传操作
upLoad({ url: fileInfo }).then(res => {//upoad是自己封装的接口
emit('fileSelected', res.data)
}).catch(err => {
})
},
(err) => {
});
} else {
uni.showToast({
title: '不支持文件上传',
duration: 2000
});
}
})
需要注意的是,该方案只支持app,h5不支持。+