如何使用php ...下载完整目录并解码文件名...?

问题描述

如何使用php下载以base64_encode()编码的完整目录以及子文件,子文件夹以及子文件夹的所有文件和文件夹,但文件和文件夹的名称应在base64_decode()中解码?

这里有谁能给我这个不可能回答的问题的答案?谢谢。

(对不起,英语不好)

解决方法

示例目录:

$ tree directory1/
directory1/
├── directory2
│   └── file3.txt
├── file1.txt
└── file2.txt

使用RecursiveDirectoryIteratorRecursiveIteratorIterator遍历目录及其子目录以列出所有文件。选择是要路径还是仅文件名。之后,base64编码仅针对每个函数调用此函数。

$rdi = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('directory1',FilesystemIterator::SKIP_DOTS));

$entries = [];
foreach ($rdi as $e) {
  $entries[] = $e->getPathName(); // $e->getFileName()
}

var_dump($entries);

$encodedEntries = [];
foreach($entries as $e) {
  $encodedEntries[] = base64_encode($e);
}

var_dump($encodedEntries);

输出:

array(3) {
  [0]=>
  string(20) "directory1/file2.txt"
  [1]=>
  string(31) "directory1/directory2/file3.txt"
  [2]=>
  string(20) "directory1/file1.txt"
}
array(3) {
  [0]=>
  string(28) "ZGlyZWN0b3J5MS9maWxlMi50eHQ="
  [1]=>
  string(44) "ZGlyZWN0b3J5MS9kaXJlY3RvcnkyL2ZpbGUzLnR4dA=="
  [2]=>
  string(28) "ZGlyZWN0b3J5MS9maWxlMS50eHQ="
}

如果您还需要列表中的目录,请删除FilesystemIterator::SKIP_DOTS标志并从其他条目中解析出目录名称。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...