PHP上传整个文件夹
在PHP中,没有直接上传整个文件夹的原生功能。但是,你可以使用一些技巧来实现这一功能。以下是一个简单的解决方案,使用HTML5的<input>
标签和JavaScript来选择整个文件夹,然后通过PHP来处理这些文件。
HTML 和 JavaScript:
<form id="uploadForm" action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" id="folderInput" name="folder[]" multiple webkitdirectory directory />
<input type="submit" value="Upload" />
</form>
<script>
document.getElementById('folderInput').addEventListener('change', function() {
if (this.files.length > 0) {
document.getElementById('uploadForm').submit();
}
});
</script>
PHP (upload.php
):
<?php
$targetDir = "uploads/"; // 确保这个目录已经存在并且可写
if (!file_exists($targetDir)) {
mkdir($targetDir);
}
$i = 0;
foreach ($_FILES['folder']['error'] as $status) {
if ($status == UPLOAD_ERR_OK) {
$filename = $_FILES['folder']['name'][$i];
move_uploaded_file($_FILES['folder']['tmp_name'][$i], $targetDir . $filename);
}
$i++;
}
echo "Files uploaded successfully.";
?>
在这个例子中,当用户选择一个文件夹并提交表单时,所有文件夹中的文件都会作为folder[]
数组发送到upload.php
。在upload.php
中,我们遍历这个数组,将文件移动到服务器上的指定目录。
请注意,这个解决方案不会保留文件夹结构,所有文件都会上传到指定目录的根部。如果需要保持文件夹结构,你将需要在客户端记录文件的相对路径,并在服务器端重建这个结构。这种操作更复杂,可能需要使用额外的JavaScript代码来追踪文件夹结构。
评论已关闭