公告
  
重要通知:网站网络变更中可能出现站点图片无法加载的问题,点击此处可解决!
更多资讯可访问:点击查看消息详情!

朕已阅

(笔记)文件上传php代码

admin 千秋月 关注 管理组 论坛神话
发表于程序代码版块 技术杂文
upload.php代码:

<?php
// 设置上传目录
$upload_dir = __DIR__ . '/bbs_data/1/';

// 检查上传目录是否存在,不存在则创建
if (!is_dir($upload_dir)) {
    mkdir($upload_dir, 0777, true);
}

// 获取当前日期并创建对应的子目录
$year = date('Y');
$month = date('m');
$day = date('d');
$sub_dir = $upload_dir . $year . '/' . $month . '/' . $day;
if (!is_dir($sub_dir)) {
    mkdir($sub_dir, 0777, true);
}

// 处理文件上传
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['files'])) {
    $files = $_FILES['files'];
    $file_count = count($files['name']);
    $uploaded_files = []; // 用于存储上传文件的直链

    for ($i = 0; $i < $file_count; $i++) {
        $file_name = $files['name'][$i];
        $file_tmp = $files['tmp_name'][$i];
        $file_size = $files['size'][$i];
        $file_error = $files['error'][$i];

        // 获取文件扩展名
        $file_ext = pathinfo($file_name, PATHINFO_EXTENSION);

        // 生成唯一的文件名
        $file_prefix = date('YmdHis') . '_'; // 使用当前时间的时间戳
        $file_suffix = 1;
        $new_file_name = $file_prefix . $file_suffix . '.' . $file_ext;
        $destination = $sub_dir . '/' . $new_file_name;

        // 检查文件大小和错误
        if ($file_size > 5 * 1024 * 1024) { // 限制文件大小为5MB
            continue;
        }
        if ($file_error !== UPLOAD_ERR_OK) {
            continue;
        }

        // 检查文件是否已存在,如果存在则修改文件名
        while (file_exists($destination)) {
            $file_suffix++;
            $new_file_name = $file_prefix . $file_suffix . '.' . $file_ext;
            $destination = $sub_dir . '/' . $new_file_name;
        }

        // 移动文件到目标位置
        if (move_uploaded_file($file_tmp, $destination)) {
            // 文件上传成功
            // 将文件直链添加到数组
            $uploaded_files[] = $new_file_name;
        }
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文件上传</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            height: 100vh;
            background-color: #f4f4f4;
        }
        .upload-container {
            background: white;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            text-align: center;
            width: 80%;
            max-width: 600px;
            margin-bottom: 20px;
        }
        .upload-container h1 {
            margin-bottom: 20px;
        }
        .upload-container input[type="file"] {
            margin-top: 20px;
        }
        #uploaded-files {
            padding: 10px;
            background: #fff;
            border: 1px solid #ddd;
            border-radius: 4px;
            width: 80%;
            max-width: 600px;
        }
        a {
            color: #0645ad;
            text-decoration: none;
        }
        a:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>
    <div class="upload-container">
        <h1>上传文件</h1>
        <form action="" method="post" enctype="multipart/form-data">
            <input type="file" name="files[]" multiple required>
            <button type="submit">上传</button>
        </form>
    </div>
    <?php if (!empty($uploaded_files)): ?>
    <div id="uploaded-files">
        <h2>已上传文件直链:</h2>
        <ul>
            <?php foreach ($uploaded_files as $file): ?>
                <li><a href="<?php echo '/bbs_data/1/' . $year . '/' . $month . '/' . $day . '/' . $file; ?>" target="_blank"><?php echo $file; ?></a></li>
            <?php endforeach; ?>
        </ul>
    </div>
    <?php endif; ?>
</body>
</html>

upload.php代码(优化版):

<?php
// 设置上传目录---
$upload_dir = __DIR__ . '/1/liaotianshi/';

// 检查上传目录是否存在,不存在则创建
if (!is_dir($upload_dir)) {
    mkdir($upload_dir, 0777, true);
}

// 获取当前日期并创建对应的子目录
$year = date('Y');
$month = date('m');
$day = date('d');
$sub_dir = $upload_dir . $year . '/' . $month . '/' . $day;
if (!is_dir($sub_dir)) {
    mkdir($sub_dir, 0777, true);
}

// 允许上传的文件类型
$allowed_extensions = ['jpg', 'jpeg', 'png', 'gif', 'mp4']; // 示例:仅允许图片和视频文件

// 处理文件上传
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['files'])) {
    $files = $_FILES['files'];
    $file_count = count($files['name']);
    $uploaded_files = []; // 用于存储上传文件的直链
    $upload_errors = []; // 用于存储上传错误信息

    for ($i = 0; $i < $file_count; $i++) {
        $file_name = $files['name'][$i];
        $file_tmp = $files['tmp_name'][$i];
        $file_size = $files['size'][$i];
        $file_error = $files['error'][$i];

        // 获取文件扩展名
        $file_ext = pathinfo($file_name, PATHINFO_EXTENSION);

        // 检查文件扩展名是否在允许列表中
        if (!in_array(strtolower($file_ext), $allowed_extensions)) {
            $upload_errors[] = "文件类型不允许:{$file_name}";
            continue;
        }

        // 生成唯一的文件名
        $file_prefix = date('YmdHis') . '_'; // 使用当前时间的时间戳
        $file_suffix = 1;
        $new_file_name = $file_prefix . $file_suffix . '.' . $file_ext;
        $destination = $sub_dir . '/' . $new_file_name;

        // 检查文件大小和错误
        if ($file_size > 5 * 1024 * 1024) { // 限制文件大小为5MB
            $upload_errors[] = "文件大小超过限制:{$file_name}";
            continue;
        }
        if ($file_error !== UPLOAD_ERR_OK) {
            $upload_errors[] = "文件上传错误:{$file_name}";
            continue;
        }

        // 检查文件是否已存在,如果存在则修改文件名
        while (file_exists($destination)) {
            $file_suffix++;
            $new_file_name = $file_prefix . $file_suffix . '.' . $file_ext;
            $destination = $sub_dir . '/' . $new_file_name;
        }

        // 移动文件到目标位置
        if (move_uploaded_file($file_tmp, $destination)) {
            // 文件上传成功
            // 将文件直链添加到数组
            $uploaded_files[] = $new_file_name;
        }
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文件上传</title>
    <style>
        body {
            font-family: 'Arial', sans-serif;
            margin: 0;
            padding: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            height: 100vh;
            background-color: #f4f4f4;
        }
        .upload-container {
            background: white;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            text-align: center;
            width: 80%;
            max-width: 600px;
            margin-bottom: 20px;
        }
        .upload-container h1 {
            margin-bottom: 20px;
            color: #333;
        }
        form {
            margin-top: 20px;
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        input[type="file"] {
            margin-top: 10px;
            padding: 10px;
            border: 1px solid #0645ad;
            border-radius: 5px;
            background-color: transparent;
            color: #0645ad;
            font-size: 16px;
            cursor: pointer;
            transition: all 0.3s ease;
        }
        input[type="file"]:hover {
            background-color: #e6ecf5;
        }
        input[type="file"]:focus {
            outline: none;
            border-color: #0b7bec;
        }
        button {
            padding: 10px 20px;
            margin-top: 10px;
            border: none;
            border-radius: 5px;
            background-color: #0645ad;
            color: white;
            font-size: 16px;
            cursor: pointer;
            transition: all 0.3s ease;
        }
        button:hover {
            background-color: #0b7bec;
        }
        button:focus {
            outline: none;
        }
        #uploaded-files {
            padding: 10px;
            background: #fff;
            border: 1px solid #ddd;
            border-radius: 4px;
            width: 80%;
            max-width: 600px;
        }
        a {
            color: #0645ad;
            text-decoration: none;
            word-wrap: break-word; /* 允许链接在单词内换行 */
            white-space: pre-wrap; /* 保持空白符,允许换行 */
        }
        a:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>
    <div class="upload-container">
        <h1>上传文件</h1>
        <form action="" method="post" enctype="multipart/form-data">
            <input type="file" name="files[]" multiple required>
            <button type="submit">上传</button>
        </form>
    </div>
    <?php if (!empty($uploaded_files)): ?>
    <div id="uploaded-files">
        <h2>已上传文件直链:</h2>
        <ul>
            <?php foreach ($uploaded_files as $file): ?>
                <li><a href="<?php echo 'http://up.3qpd.com/1/liaotianshi/' . $year . '/' . $month . '/' . $day . '/' . $file; ?>" target="_blank"><?php echo  'http://up.3qpd.com/1/liaotianshi/' . $year . '/' . $month . '/' . $day . '/' . $file; ?></a></li>
            <?php endforeach; ?>
        </ul>
    </div>
    <?php endif; ?>
    <?php if (!empty($upload_errors)): ?>
    <div id="upload-errors">
        <h2>上传错误:</h2>
        <ul>
            <?php foreach ($upload_errors as $error): ?>
                <li><?php echo $error; ?></li>
            <?php endforeach; ?>
        </ul>
    </div>
    <?php endif; ?>
</body>
</html>

本文章最后由 admin2024-12-10 23:49 编辑
评论列表 评论
发布评论

评论: (笔记)文件上传php代码



点击进入免费吃瓜群!吃大瓜! 广告位支持代码、文字、图片展示 Image


免责声明
本站资源,均来自网络,版权归原作者,所有资源和文章仅限用于学习和研究目的 。 不得用于商业或非法用途,否则,一切责任由该用户承担 !

请求资源或报告无效资源,请点击[反馈中心]


侵权删除请致信 E-Mail:chengfengad@gmail.com
已有0次打赏
(2) 分享
分享
取消