PHP批量上传文件并创建时间戳文件夹
使用PHP批量上传文件并创建时间戳文件夹
本示例展示如何使用PHP编写一个网页,实现批量上传文件并为每次上传创建一个以时间戳命名的文件夹,并将文件夹名返回给上传者。
代码示例
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h2>文件上传</h2>
<form method='post' enctype='multipart/form-data'>
<input type='file' name='files[]' multiple>
<input type='submit' value='上传'>
</form>
<?php
if(isset($_FILES['files'])){ // 检查是否上传了文件
$timestamp = time(); // 获取当前时间戳
$folderName = date('Y-m-d_H-i-s', $timestamp); // 生成文件夹名
$uploadFolder = 'uploads/' . $folderName . '/'; // 上传文件夹路径
if(!is_dir($uploadFolder)){ // 如果文件夹不存在,则创建
mkdir($uploadFolder, 0777, true);
}
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){ // 遍历上传的文件
$file_name = $_FILES['files']['name'][$key];
$file_tmp = $_FILES['files']['tmp_name'][$key];
$destination = $uploadFolder . $file_name; // 文件目标路径
move_uploaded_file($file_tmp, $destination); // 移动文件到目标路径
}
echo '文件上传成功!文件夹名: ' . $folderName; // 输出成功信息
}
?>
</body>
</html>
代码解析
-
HTML表单:
<form>标签用于提交文件上传数据,enctype='multipart/form-data'属性用于处理文件上传。<input type='file' name='files[]' multiple>用于选择文件,multiple属性允许选择多个文件。
-
PHP代码:
- 检查文件上传:
isset($_FILES['files'])判断是否上传了文件。 - 生成时间戳文件夹:
$timestamp = time();获取当前时间戳。$folderName = date('Y-m-d_H-i-s', $timestamp);将时间戳格式化为Y-m-d_H-i-s。
- 创建文件夹:
mkdir($uploadFolder, 0777, true);创建名为$folderName的文件夹。 - 移动上传文件: 使用
foreach循环遍历所有上传的文件,并将每个文件移动到生成的文件夹中。 - 输出成功信息:
echo '文件上传成功!文件夹名: ' . $folderName;显示上传成功的消息和文件夹名。
- 检查文件上传:
使用说明
- 将代码保存为
.php文件,例如upload.php。 - 确保服务器已开启
allow_url_fopen和file_uploads选项。 - 上传该文件到服务器。
- 在浏览器中访问该文件,例如
http://your-server/upload.php。 - 选择要上传的文件,并点击“上传”按钮。
注意
uploads文件夹应存在于代码所在目录,并具有写入权限。- 代码中使用的
mkdir()函数可能需要根据服务器配置调整权限。 - 本示例只提供基本的上传功能,实际应用中可能需要根据需求添加其他功能,例如文件大小限制、文件类型验证等。
原文地址: https://www.cveoy.top/t/topic/byfI 著作权归作者所有。请勿转载和采集!