【低调推荐】 Uniapp 原生 Android IOS 文件选择插件

511 阅读1分钟

一、插件咨询和查看

Uniapp插件市场 - 原生 Android IOS 文件选择插件

有问题咨询QQ群 - 838332280

一定要添加权限:

​ Android:

READ_EXTERNAL_STORAGE :读取存储权限

WRITE_EXTERNAL_STORAGE:写入存储权限

​ IOS:

NSPhotoLibraryUsageDescription:是否允许App访问您的相册

NSPhotoLibraryAddUsageDescription:是否允许App访问您的相册

NSAppleMusicUsageDescription:是否允许App访问您的媒体资料库

二、类型说明

//文件类型枚举
enum EasyFileType {
  Any = 'any',
  Media = 'media',
  Image = 'image',
  Video = 'video',
  Audio = 'audio',
  Custom = 'custom'
}

三、API说明

pickFiles(Object config)

  • 功能描述:

    文件选择。

  • 传入参数:

    参数类型参数名称参数含义
    EasyFileTypetype文件类型
    StringallowedExtensions筛选文件后缀
    BoolallowMultiple多选 - EasyFileType为Media、Image、Video、Audio生效,单选 - EasyFileType为Any、Custom生效。
  • 参数例子:

    {	
      'type': EasyFileType.Image.toString(), //选择文件类型
      'allowedExtensions': 'pdf,docx', //type为custom时生效,筛选文件后缀
      'allowMultiple': true,//多选,单选
    }
    

clear()

  • 功能描述:

    清理缓存。

注意:allowMultiple = true 时,Android 选择目录多选时,长按文件才可以多选

四、使用案例

<template>
	<view class="content">
		<button type="primary" @click="filePick">选择文件</button>
		<view>
			-------------------------
		</view>
		<view class="textbox">
			<text>{{result}}</text>
		</view>
	</view>
</template>


<script setup lang="ts">
	import {
		onUnmounted,
		ref
	} from "vue";
	var filePickerModule = uni.requireNativePlugin("RLUni-EasyFilePickerModule")

	enum EasyFileType {
		Any = 'any',
			Media = 'media',
			Image = 'image',
			Video = 'video',
			Audio = 'audio',
			Custom = 'custom'
	}

	var result = ref('');

	function filePick() {
		// 调用异步方法
		filePickerModule.pickFiles({
				'type': EasyFileType.Video.toString(),
				'allowedExtensions': 'pdf,docx',
				'allowMultiple': true,
			},
			(ret: any) => {
				result.value = JSON.stringify(ret)
			})
	}

	onUnmounted(() => {
		filePickerModule.clear()
	})
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.textbox {
		width: 100%;
		word-wrap: break-word;
	}
</style>


iShot_2022-10-19_11.20.41.png

iShot_2022-10-19_11.24.08.png