uni-app 支付宝小程序云 前端网页托管 报错:删除文件夹时提醒非空文件夹不能删除

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

uni-app 支付宝小程序云 前端网页托管 报错:删除文件夹时提醒非空文件夹不能删除

产品分类

uniCloud/支付宝小程序云

操作步骤

上传文件到支付宝小程序云网页托管, 然后删除这个文件夹

预期结果

随便删除

实际结果

会判断文件夹是否为空

bug描述

当上传到支付宝小程序云前端网页托管时, 想删除某个文件时, 会提示非空文件夹不让删除。1个1个文件删除, 实在太慢了…

图片


15 回复

我在 阿里云的 前端托管 删除 文件夹的时候 , 就可以 随便删除


给我一个脚本也行,200多文件怎么更新

目前支付宝暂未支持删除非空目录,正在跟进,后续会做支持。

那如果 支付宝不支持的话 , 能不能 也添加 一个 类似的功能, 底层 是 for 循环 删除 一个一个 调用api 删除呢? 用户 一个一个 删, 实在 太耗时了

6月份了,还没支持吗,这个问题直接关系到uni-admin的使用

一年了还不支持

写了人生 第一个 油猴插件, 就是为了 删除 这个 托管文件夹

内部是 调用 接口 递归删除, 不过还是 太慢了, 麻烦 官方 重视下这个问题

支付宝云网页托管请尽快支持删除非空目录!!!!

七月份了还不支持,这是个正常人也能想到是必须要用功能啊!!

10月了还不支持?

11月了还不支持

12月了还不支持

快1月了,大哥,我也觉着这个别扭的不行,看着一堆没用的删不了

2025/1/3 还不支持

在处理uni-app开发支付宝小程序云前端网页托管过程中,遇到“删除文件夹时提醒非空文件夹不能删除”这类问题,通常是因为尝试删除的文件夹中仍包含文件或子文件夹。为了确保文件夹能够被正确删除,我们需要先递归地删除其中的所有内容。以下是一个基于JavaScript的解决方案,展示了如何在Node.js环境下实现这一功能。虽然这不是直接在uni-app或支付宝小程序中运行的代码,但可以在服务器端脚本中使用,特别是当你通过Node.js来管理云存储或服务器文件时。

const fs = require('fs');
const path = require('path');

/**
 * 递归删除文件夹及其内容
 * @param {string} dirPath - 要删除的文件夹路径
 */
async function deleteFolderRecursive(dirPath) {
    return new Promise((resolve, reject) => {
        fs.readdir(dirPath, (err, files) => {
            if (err) {
                return reject(err);
            }
            let count = 0;

            const checkDone = () => {
                if (--count === 0) {
                    fs.rmdir(dirPath, err => {
                        if (err) {
                            return reject(err);
                        }
                        resolve();
                    });
                }
            };

            files.forEach(file => {
                const filePath = path.join(dirPath, file);
                count++;
                fs.stat(filePath, (err, stats) => {
                    if (err) {
                        return reject(err);
                    }
                    if (stats.isDirectory()) {
                        deleteFolderRecursive(filePath).then(checkDone, reject);
                    } else {
                        fs.unlink(filePath, err => {
                            if (err) {
                                return reject(err);
                            }
                            checkDone();
                        });
                    }
                });
            });

            // 如果没有文件或文件夹,则直接删除空文件夹
            if (files.length === 0) {
                fs.rmdir(dirPath, err => {
                    if (err) {
                        return reject(err);
                    }
                    resolve();
                });
            }
        });
    });
}

// 使用示例
const folderPathToDelete = '/path/to/your/folder';
deleteFolderRecursive(folderPathToDelete)
    .then(() => console.log('Folder deleted successfully'))
    .catch(err => console.error('Error deleting folder:', err));

这段代码定义了一个deleteFolderRecursive函数,它接受一个文件夹路径作为参数,并递归地删除该文件夹及其所有内容。该函数返回一个Promise,当文件夹及其内容被成功删除时解析,如果遇到错误则拒绝。

请注意,实际在uni-app或支付宝小程序环境中,你可能需要通过云函数或其他服务器端逻辑来执行此类操作,因为前端直接操作文件系统通常是不被允许的。此外,确保你有适当的权限来删除指定的文件夹和文件。

回到顶部