更新记录
1.0.0(2026-04-14)
- 新增 Android / iOS 外部文件导入插件
- 支持从系统共享、用其他应用打开导入文件
- 支持复制到应用缓存目录并返回稳定路径
- 返回文件名、大小、后缀、MIME、来源信息
- 新增 Demo 页面与使用文档
平台兼容性
uni-app(4.75)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| × | × | × | × | √ | √ | √ | √ | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.75)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | √ | √ | - | × |
austin-import-files
austin-import-files 是一个 App 外部文件导入 UTS 插件,兼容 Android / iOS 实现。
它解决的不是“我自己在 App 里选文件”,而是“别的 App 已经有文件了,用户要把文件直接导进我的 App”。
典型场景:
- 微信里收到 PDF / Word / Excel,选择“用其他应用打开”,导入你的 App
- iPhone 文件 App 或 Android 文件管理器里已有文件,直接共享到你的 App
- Safari / 浏览器下载的合同、课件、压缩包,直接用你的 App 打开
- 邮件附件、钉钉、飞书、企业微信文档,直接导入你的资料库
点击试用插件
当前目录下的 index.vue 是完整模板页,点击试用后包含:
- 当前平台能力展示
- 当前待处理导入数量
- 导入到应用缓存目录开关
- 调用
consumePendingImportFiles - 导入后用
uni.openDocument预览
功能
- 支持 Android / iOS 通过系统共享或“用其他应用打开”导入文件
- Android 支持单文件和多文件导入
- iOS 当前首版按单文件导入为主
- 支持复制到应用缓存目录
- 返回统一文件信息
优势
- 不只返回原始
uri,会尽量转成业务侧更容易继续处理的稳定路径 - Android 导入时会优先复制到应用缓存,避免第三方
content://授权过期后无法继续读取 - 返回结构统一,直接给出
path、nativePath、name、size、ext、mimeType、sourceApp - 更适合做上传、归档、解析、附件接入;插件核心是“把文件稳定导入 App”
接入说明
这个插件依赖系统注册能力,所以你安装后需要打自定义基座,让:
- Android 的
AndroidManifest.xml - iOS 的
Info.plist
生效后,系统共享列表或“用其他应用打开”里才能出现你的 App。
API
getImportFilesCapabilities()
返回当前平台能力对象。
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|---|---|---|---|---|
supported |
当前平台是否支持外部文件导入 | Boolean |
- |
true / false |
platform |
当前平台标识 | String |
- |
android / ios / other |
supportsMultiple |
当前平台是否支持多文件导入 | Boolean |
- |
true / false |
supportsCopyToCache |
是否支持复制到应用缓存目录 | Boolean |
- |
true / false |
requiresSystemRegistration |
是否依赖系统注册后才能显示入口 | Boolean |
- |
true / false |
notes |
当前平台说明或限制提示 | String |
- |
- |
hasPendingImportFiles()
返回当前是否有待处理导入文件。
getPendingImportCount()
返回当前待处理导入文件数量。
consumePendingImportFiles(options?)
参数配置
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|---|---|---|---|---|
copyToCache |
是否复制到应用缓存目录;开启后更适合上传、预览、归档 | Boolean |
true |
true / false |
clearPendingImportFiles()
清空当前待处理导入记录。
返回结果
单个文件项
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|---|---|---|---|---|
name |
文件名称 | String |
- |
- |
path |
业务层优先使用的文件路径 | String |
- |
- |
nativePath |
原生层可直接使用的本地绝对路径 | String |
- |
- |
uri |
外部应用传入的原始 uri |
String |
- |
- |
size |
文件大小,单位字节 | Number |
0 |
- |
ext |
文件后缀,不带 . |
String |
'' |
- |
mimeType |
文件 MIME 类型 | String |
'' |
- |
sourceApp |
来源应用标识 | String |
'' |
- |
sourceType |
来源方式 | String |
- |
share / open-in |
copied |
是否已复制到应用缓存目录 | Boolean |
false |
true / false |
完整结果
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|---|---|---|---|---|
ok |
本次读取是否成功 | Boolean |
false |
true / false |
platform |
当前平台标识 | String |
- |
android / ios / other |
count |
本次返回文件数量 | Number |
0 |
- |
copied |
本次返回的文件是否已复制到缓存目录 | Boolean |
false |
true / false |
files |
文件结果数组 | Array |
[] |
- |
errCode |
错误码,成功时为 0 |
Number |
0 |
- |
errMsg |
错误信息,成功时为空字符串 | String |
'' |
- |
最小示例
import {
getPendingImportCount,
consumePendingImportFiles,
} from '@/uni_modules/austin-import-files'
const pendingCount = getPendingImportCount()
if (pendingCount > 0) {
const res = consumePendingImportFiles({
copyToCache: true,
})
console.log('import-files-result', res)
}
注意
- 这是“外部文件导入到 App”,不是普通文件选择器
- Android / iOS 的系统入口名字不完全相同,常见为“共享”、“用其他应用打开”、“拷贝到”
- 安装插件后需要重新运行或重新打包,系统注册信息才会生效
- 插件重点是“导入并返回稳定路径”;是否预览、如何预览,取决于文件类型和你的业务处理方式

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 606
赞赏 4
下载 11526196
赞赏 1904
赞赏
京公网安备:11010802035340号