uni-app 选择文件夹

发布于 1周前 作者 caililin 来自 Uni-App

uni-app 选择文件夹

为什么没有选择文件夹的的安卓插件,(不是选择文件)这个功能还是很常规的呀,插件市场一个都没有

3 回复

是需要选择整个文件夹上传吗


选择之后知道他选了的文件夹路径名是什么。后续可能也有整个文件夹上传的功能。但是我看插件市场好像没有相关的插件

uni-app 中,直接选择文件夹的功能原生并不直接支持,因为 uni-app 主要是面向移动端的跨平台框架,而移动端操作系统(如iOS和Android)通常不提供直接通过文件选择器选择整个文件夹的API。不过,你可以通过一些变通的方法来实现类似功能,比如让用户逐个选择文件,然后在应用逻辑中处理这些文件。

如果你确实需要在 uni-app 中实现文件夹选择的功能,可以考虑以下思路:

  1. 使用文件选择器选择文件:通过 uni.chooseFileuni.chooseMessageFile 选择文件。
  2. 在服务器端处理文件夹逻辑:将选择的文件上传到服务器,然后在服务器端处理这些文件,模拟文件夹的操作。

以下是一个使用 uni.chooseFile 选择文件的示例代码:

// 在页面脚本中
export default {
    data() {
        return {
            files: []
        };
    },
    methods: {
        chooseFiles() {
            uni.chooseFile({
                count: 9, // 最多可以选择的文件个数
                sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图
                sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机
                success: (res) => {
                    // tempFilePath可以作为img标签的src属性显示图片
                    const tempFilePaths = res.tempFiles;
                    this.files = tempFilePaths.map(file => file.path);
                    console.log('选择的文件路径:', this.files);

                    // 可以在这里添加上传文件的逻辑
                    this.uploadFiles(this.files);
                },
                fail: (err) => {
                    console.error('选择文件失败:', err);
                }
            });
        },
        uploadFiles(files) {
            files.forEach(file => {
                uni.uploadFile({
                    url: 'https://your-server.com/upload', // 仅为示例,非真实的接口地址
                    filePath: file,
                    name: 'file',
                    formData: {
                        user: 'test'
                    },
                    success: (uploadFileRes) => {
                        console.log('文件上传成功:', uploadFileRes);
                    },
                    fail: (err) => {
                        console.error('文件上传失败:', err);
                    }
                });
            });
        }
    }
};

注意:

  • uni.chooseFile 返回的是文件的临时路径,这些路径在应用重启或设备重启后可能失效。
  • 文件上传部分需要根据你的服务器接口进行调整。
  • 如果确实需要客户端处理文件夹逻辑,可能需要考虑使用原生开发(如使用React Native、Flutter或原生iOS/Android开发)来实现更复杂的文件操作。
回到顶部