gpt4 book ai didi

javascript - 从文件夹中获取文件名

转载 作者:行者123 更新时间:2023-11-30 00:25:42 24 4
gpt4 key购买 nike

我想让用户通过点击上传按钮来选择一个文件夹。在提交时,我想从文件夹中检索所有文件名(递归地),而不上传任何文件或文件夹。

例子,假设有文件夹名称 Test 具有以下文件夹结构:
测试
- 1.txt
- 2.pdf
- 3.avi
- Test2(文件夹,包含多个文件)
- 4.mp4

单击上传按钮选择测试文件夹时,输出应为:1.txt , 2.pdf , 3.avi, Test2 (此文件夹内文件的文件名) , 4.mp4

我不需要获取文件中的内容,只需要文件名。

我应该怎么做?我知道有允许文件夹上传的 chrome webkit 目录

<?php
$count = 0;
$name2 = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
foreach ($_FILES['files']['name'] as $i => $name) {
if (strlen($_FILES['files']['name'][$i]) > 1) {
$count++;

array_push($name2, $_FILES['files']['name'][$i]);
}
}
}
?>

<!DOCTYPE HTML>
<html>

<body>
<form method="post" enctype="multipart/form-data">
<input type="file" name="files[]" id="files" multiple="" directory="" webkitdirectory="" mozdirectory="">
<input class="button" type="submit" value="Upload" />
</form>
</body>

</html>

$name2 数组返回文件名列表
以上代码不适用于视频文件,并且与其他浏览器不兼容。

还有其他方法吗?

最佳答案

PHP 为您提供了一个称为文件系统迭代器的对象,它旨在帮助您循环遍历指定的文件夹。在你的情况下,我会做一个递归函数,看起来像这样:

function readFolder($folder)
{
$retArray = array();
$folder = new FilesystemIterator("path/to/folder", FilesystemIterator::SKIP_DOTS);
foreach($folder as $file)
{
if(is_dir($file->getPathname())
$retArray[] = readFolder($file->getPathname());
else
$retArray[] = $file->getFilename();
}

return $retArray;
}

所有这一切的好处是 getPathname() 方法返回文件的完整路径,而如果您只想要文件的名称,则可以只使用 getFilename() 方法。这是 PHP 网站上文档的链接:

http://php.net/manual/en/class.filesystemiterator.php

此外,出于安全考虑,当您使用"file"输入类型时,现代网络浏览器不包含文件的完整路径。

关于javascript - 从文件夹中获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31522890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com