问题描述
如何使用php下载以base64_encode()编码的完整目录以及子文件,子文件夹以及子文件夹的所有文件和文件夹,但文件和文件夹的名称应在base64_decode()中解码?
这里有谁能给我这个不可能回答的问题的答案?谢谢。
(对不起,英语不好)
解决方法
示例目录:
$ tree directory1/
directory1/
├── directory2
│ └── file3.txt
├── file1.txt
└── file2.txt
使用RecursiveDirectoryIterator
和RecursiveIteratorIterator
遍历目录及其子目录以列出所有文件。选择是要路径还是仅文件名。之后,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
标志并从其他条目中解析出目录名称。