更新记录

1.2.0(2025-06-19)

正式开放功能,请自由使用!

1.0.0(2025-06-19)

1.0.0


平台兼容性

文件路径管理器插件

一个用于处理Android文件分享和选择的UTS插件,突破uni-app文件选择限制。

🎯 核心功能

  • 主动文件选择 - 突破uni-app限制,支持选择任意类型文件
  • 分享文件处理 - 接收和处理第三方应用分享的文件
  • 智能路径处理 - 自动处理不同URI类型,确保文件可正常上传
  • 自动清理 - 定时清理临时文件,防止缓存堆积

📱 支持平台

  • ✅ Android App
  • ❌ iOS(占位符实现)

🚀 快速开始

1. 配置AndroidManifest.xml

在项目根目录的AndroidManifest.xml中添加:

<!-- 在<activity>标签内添加文件分享支持 -->
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
    package="piao.manifest.filter">
    <application>
        <!-- 主Activity配置 -->
        <activity android:name="io.dcloud.PandoraEntry" android:launchMode="singleTask"
            android:configChanges="orientation|keyboardHidden|screenSize" android:windowSoftInputMode="adjustResize">

            <!-- 添加文件分享的Intent过滤器 -->
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <action android:name="android.intent.action.SEND_MULTIPLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <!-- 接收所有文件类型 -->
                <data android:mimeType="*/*" />
                <!-- 限定支持的文件类型 -->
                <!--                <data android:mimeType="image/*" />
                <data android:mimeType="audio/*" />
                <data android:mimeType="video/*" />
                <data android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
                <data android:mimeType="application/pdf" />
                <data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
                <data android:mimeType="text/plain" />
                <data android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" /> -->
            </intent-filter>
        </activity>
    </application>
</manifest>

2. 基本使用

// #ifdef APP-PLUS
import {
    hasSharedFiles,
    getSharedFilePath,
    chooseFile,
    startAutoCleanup
} from '@/uni_modules/piao-filePathManager';
// #endif

export default {
    onLoad() {
        // 启动自动清理
        startAutoCleanup();

        // 检查分享文件
        if (hasSharedFiles()) {
            this.getSharedFiles();
        }
    },

    methods: {
        // 获取分享文件
        getSharedFiles() {
            getSharedFilePath({
                success: (res) => {
                    res.files.forEach(file => {
                        console.log('文件:', file.name);
                        // file.path 可直接用于上传
                        this.uploadFile(file.path, file.name);
                    });
                }
            });
        },

        // 主动选择文件
        selectFiles() {
            chooseFile({
                multiple: true,
                accept: "*/*",
                success: (res) => {
                    res.files.forEach(file => {
                        this.uploadFile(file.path, file.name);
                    });
                }
            });
        }
    }
}

📋 API参考

检测和获取分享文件

// 检查是否有分享文件
const hasFiles = hasSharedFiles(); // 返回 boolean

// 获取分享文件信息
getSharedFilePath({
    success: (res) => {
        // res.count: 文件数量
        // res.files: 文件信息数组
    },
    fail: (error) => console.log(error.errMsg)
});

主动选择文件

chooseFile({
    multiple: true,     // 是否多选
    accept: "image/*",  // 文件类型过滤
    success: (res) => {
        // 同上,返回文件信息
    }
});

自动清理功能 🆕

// 启动自动清理(推荐在应用启动时调用)
startAutoCleanup();

// 停止自动清理
stopAutoCleanup();

// 获取临时文件状态
const info = getTempFileInfo();
console.log(`${info.count}个临时文件,共${info.totalSizeString}`);

// 手动清理
cleanupTempFiles();

📁 返回的文件信息

{
    path: "file:///path/to/file.pdf",  // ✅ 可直接上传
    name: "文档.pdf",                   // 文件名(支持中文)
    size: 1024,                        // 文件大小(字节)
    sizeString: "1.00 KB",            // 格式化大小
    exists: true,                      // 文件是否存在
    canRead: true                      // 是否可读
}

⚙️ 清理策略

  • 自动清理: 每30分钟清理超过2小时的临时文件
  • 手动清理: 立即清理超过10分钟的临时文件
  • 安全机制: 只清理插件创建的文件,不影响其他应用

💡 最佳实践

  1. 应用启动时调用 startAutoCleanup()
  2. 页面卸载时调用 stopAutoCleanup()
  3. 上传完成后调用 cleanupTempFiles()
  4. 定期检查 getTempFileInfo() 监控存储状态

❓ 常见问题

Q: 为什么需要配置AndroidManifest.xml?
A: 用于接收其他应用的文件分享Intent。

Q: 文件路径可以直接上传吗?
A: 可以!返回的path已包含正确的协议前缀。

Q: 临时文件会占用太多空间吗?
A: 不会,启用自动清理后会定期清理过期文件。


版本信息

当前版本: v1.2.0
更新内容: 新增自动清理功能,优化内存管理

隐私、权限声明

1. 本插件需要申请的系统权限列表:

另外配置

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问