使用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>

代码解析

  1. HTML表单:

    • <form> 标签用于提交文件上传数据,enctype='multipart/form-data' 属性用于处理文件上传。
    • <input type='file' name='files[]' multiple> 用于选择文件,multiple 属性允许选择多个文件。
  2. 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; 显示上传成功的消息和文件夹名。

使用说明

  1. 将代码保存为.php 文件,例如upload.php
  2. 确保服务器已开启allow_url_fopenfile_uploads 选项。
  3. 上传该文件到服务器。
  4. 在浏览器中访问该文件,例如http://your-server/upload.php
  5. 选择要上传的文件,并点击“上传”按钮。

注意

  • uploads 文件夹应存在于代码所在目录,并具有写入权限。
  • 代码中使用的 mkdir() 函数可能需要根据服务器配置调整权限。
  • 本示例只提供基本的上传功能,实际应用中可能需要根据需求添加其他功能,例如文件大小限制、文件类型验证等。
PHP批量上传文件并创建时间戳文件夹

原文地址: https://www.cveoy.top/t/topic/byfI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录