php+html+js+ajax实现文件上传

php+html+js+ajax实现文件上传

目录

一、表单单文件上传

1、上传页面

2、接受文件上传php

二、表单多文件上传

1、上传页面

2、接受文件上传php

三、表单异步xhr文件上传

1、上传页面

2、接受文件上传php

四、表单异步ajax文件上传

1、上传页面

2、接受文件上传php


一、表单单文件上传
1、上传页面
html 复制代码
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head>
    <title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<form action="upload.php" method="POST" enctype="multipart/form-data">
    <input type="file" name="fileToUpload">
    <input type="submit" value="上传文件">
</form>
</body>
</html>
2、接受文件上传php
php 复制代码
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $targetDir = "uploads/"; // 上传文件保存的目录
    $targetFile = $targetDir . basename($_FILES["fileToUpload"]["name"]);
    $uploadOk = 1; // 上传状态,1表示成功,0表示失败
    $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); // 上传文件的扩展名
    // 检查文件是否为真实的图像文件
    if (isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
        if ($check !== false) {
            echo "文件是一个有效的图像 - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "文件不是一个有效的图像.";
            $uploadOk = 0;
        }
    }
    // 检查文件是否已存在
    if (file_exists($targetFile)) {
        echo "对不起,文件已存在.";
        $uploadOk = 0;
    }
    // 检查文件大小
    if ($_FILES["fileToUpload"]["size"] > 500000) {
        echo "对不起,文件太大.";
        $uploadOk = 0;
    }
    // 允许上传的文件格式
    $allowedExtensions = array("jpg", "jpeg", "png", "gif");
    if (!in_array($imageFileType, $allowedExtensions)) {
        echo "对不起,仅允许上传 JPG, JPEG, PNG 和 GIF 文件.";
        $uploadOk = 0;
    }
    // 检查上传状态
    if ($uploadOk == 0) {
        echo "对不起,文件上传失败.";
    } else {
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
            echo "文件上传成功.";
        } else {
            echo "对不起,文件上传失败.";
        }
    }
}
?>
二、表单多文件上传
1、上传页面
html 复制代码
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head>
    <title>文件上传示例</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="files[]" multiple>
    <input type="submit" value="上传文件">
</form>
</body>
</html>
2、接受文件上传php
php 复制代码
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $files = $_FILES["files"];
    // 检查是否有文件被上传
    if (!empty($files)) {
        // 循环处理每个上传的文件
        for ($i = 0; $i < count($files["name"]); $i++) {
            $file_name = $files["name"][$i];
            $file_tmp = $files["tmp_name"][$i];
            $file_size = $files["size"][$i];
            $file_error = $files["error"][$i];
            // 检查文件是否上传成功
            if ($file_error == UPLOAD_ERR_OK) {
                // 指定文件保存的路径和文件名
                $target_dir = "uploads/";
                $target_file = $target_dir . basename($file_name);
                // 将文件从临时目录移动到指定路径
                if (move_uploaded_file($file_tmp, $target_file)) {
                    echo "文件上传成功: " . $file_name . "<br>";
                } else {
                    echo "文件上传失败: " . $file_name . "<br>";
                }
            } else {
                echo "文件上传错误: " . $file_name . "<br>";
            }
        }
    } else {
        echo "没有选择要上传的文件";
    }
}
?>
三、表单异步xhr文件上传
1、上传页面
html 复制代码
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head>
    <title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<input type="file" id="fileToUpload" multiple>
<button onclick="uploadFiles()">上传文件</button>
<div id="progress"></div>
<div id="response"></div>

<script>
    function uploadFiles() {
        var input = document.getElementById('fileToUpload');
        var files = input.files;
        var formData = new FormData();
        for (var i = 0; i < files.length; i++) {
            var file = files[i];
            formData.append('files[]', file);
        }
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                document.getElementById('response').innerHTML = xhr.responseText;
            }
        };
        xhr.upload.onprogress = function(event) {
            if (event.lengthComputable) {
                var progress = (event.loaded / event.total) * 100;
                document.getElementById('progress').innerHTML = '上传进度:' + progress + '%';
            }
        };
        xhr.open('POST', 'upload.php', true);
        xhr.send(formData);
    }
</script>
</body>
</html>
2、接受文件上传php
php 复制代码
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $targetDir = "uploads/"; // 上传文件保存的目录
    if (!file_exists($targetDir)) {
        mkdir($targetDir, 0777, true); // 如果目录不存在,则创建目录
    }
    $uploadOk = 1; // 上传状态,1表示成功,0表示失败
    foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) {
        $targetFile = $targetDir . $_FILES['files']['name'][$key];
        $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); // 上传文件的扩展名
        // 检查文件是否已存在
        if (file_exists($targetFile)) {
            echo "对不起,文件已存在.";
            $uploadOk = 0;
        }
        // 允许上传的文件格式
        $allowedExtensions = array("jpg", "jpeg", "png", "gif");
        if (!in_array($imageFileType, $allowedExtensions)) {
            echo "对不起,仅允许上传 JPG, JPEG, PNG 和 GIF 文件.";
            $uploadOk = 0;
        }
        // 检查上传状态
        if ($uploadOk == 0) {
            echo "对不起,文件上传失败.";
        } else {
            if (move_uploaded_file($tmp_name, $targetFile)) {
                echo "文件上传成功.";
            } else {
                echo "对不起,文件上传失败.";
            }
        }
    }
}
?>
四、表单异步ajax文件上传
1、上传页面
html 复制代码
<!DOCTYPE html>
<html>
    <meta charset="UTF-8">
<head>
    <title>文件上传示例</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<form id="uploadForm" enctype="multipart/form-data">
    <input type="file" name="fileToUpload" id="fileToUpload">
    <button type="submit">上传</button>
</form>

<script>
    $(document).ready(function() {
        $('#uploadForm').submit(function(event) {
            event.preventDefault();

            var formData = new FormData(this);

            $.ajax({
                url: 'upload.php',
                type: 'POST',
                data: formData,
                dataType: 'text',
                processData: false,
                contentType: false,
                success: function(response) {
                    console.log('文件上传成功');
                },
                error: function() {
                    console.log('文件上传失败');
                }
            });
        });
    });
</script>
</body>
</html>
2、接受文件上传php
php 复制代码
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_FILES['fileToUpload'])) {
        $file = $_FILES['fileToUpload'];

        // 文件上传成功
        if ($file['error'] === UPLOAD_ERR_OK) {
            $fileName = $file['name'];
            $tempPath = $file['tmp_name'];

            // 将文件移动到目标文件夹
            move_uploaded_file($tempPath, 'uploads/' . $fileName);

            echo '文件上传成功';
        } else {
            echo '文件上传失败';
        }
    } else {
        echo '未选择文件';
    }
}
?>
相关推荐
s9123601011 分钟前
Rust std::thread::spawn(move) 的作用
开发语言·后端·rust
XWXnb66 分钟前
STM32 中断系统深度剖析
c语言·开发语言·stm32·嵌入式硬件
TDengine (老段)7 分钟前
TDengine 订阅不到数据问题排查
java·数据库·tdengine
冼紫菜9 分钟前
Spring Cloud 项目中优雅地传递用户信息:基于 Gateway + ThreadLocal 的用户上下文方案
java·开发语言·spring boot·后端·spring cloud·gateway
为美好的生活献上中指10 分钟前
java每日精进 4.29【框架之自动记录日志并插入如数据库流程分析】
java·linux·数据库
了一li17 分钟前
C#中用 OxyPlot 在 WinForms 实现波形图可视化(附源码教程)
开发语言·c#
时光话32 分钟前
Lua 第14部分 数据结构
开发语言·数据结构·lua
晚上不睡觉的周某人1 小时前
Java应用7(类集)
java·开发语言·windows
码银1 小时前
Java Stream流
java·开发语言