主要基于 File and Directory Entries API,在浏览器内实现对本地文件的操作。
相关文档的 地址 https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API
上面 文中提出了可以利用 拖拽 API 获取,之前 文章 宝塔文件管理 批量拖拽上传 有 用到 FileAPI 获取到的就是 FileSystemDirectoryEntry|FileSystemFileEntry
最近发现里一个 可以直接获取 FileSystemDirectoryEntry
的 API, showDirectoryPicker
直接调用 文件夹选择器 返回 FileSystemDirectoryEntry
。
通过 FileSystemDirectoryEntry
可以 实现 子文件/目录的操作,所以就有本文的
DMEO 小工具 PHP vendor 目录无用前端资源文件删除 之前这事情,一直是用 PHP 的做的
但是在发现本接口的时候 发现用,改为用 JS 毕竟,不是啥电脑 都有的 php.exe 的。但是 浏览器却都有 你没有 Chrome
男号还没有 Microsoft Edge
表情🤣
最后附上 PHP 代码
<?php
/**
* 删除 vendor 无用文件 列表自己可编辑 一行一个, 文件放在 vendor 同级目录
**/
$files = '
bower-asset/ace-builds/src
bower-asset/ace-builds/src-min
bower-asset/ace-builds/src-noconflict
bower-asset/punycode/tests
almasaeed2010/adminlte/plugins
npm-asset/font-awesome/js-packages
fortawesome/font-awesome/js-packages
';
$files = preg_split('/[\r\n]+/', $files, -1, PREG_SPLIT_NO_EMPTY);
foreach ($files as $file) {
echo __DIR__ . "/vendor/{$file}" . PHP_EOL;
deleteFile( __DIR__ . "/vendor/{$file}" );
}
function deleteFile($file) {
if (empty($file))
return false;
if (@is_file($file))
return @unlink($file);
$ret = true;
if ($handle = @opendir($file)) {
while ($filename = @readdir($handle)) {
if ($filename == '.' || $filename == '..')
continue;
if (!deleteFile($file . '/' . $filename))
$ret = false;
}
} else {
$ret = false;
}
@closedir($handle);
if (file_exists($file) && !rmdir($file)) {
$ret = false;
}
return $ret;
}