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

26 篇文章 0 订阅
25 篇文章 0 订阅

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

目录

一、表单单文件上传

1、上传页面

2、接受文件上传php

二、表单多文件上传

1、上传页面

2、接受文件上传php 

三、表单异步xhr文件上传

1、上传页面

2、接受文件上传php  

四、表单异步ajax文件上传 

1、上传页面

2、接受文件上传php   


一、表单单文件上传
1、上传页面
<!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
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、上传页面
<!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
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、上传页面
<!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
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、上传页面
<!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
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 '未选择文件';
    }
}
?>

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以使用jQuery和Ajax实现批量上传图片。以下是一个简单的示例代码: HTML部分: ```html <input type="file" id="fileInput" multiple> <button id="uploadBtn">上传</button> <div id="preview"></div> ``` JavaScript部分: ```javascript $(document).ready(function() { // 当选择文件发生改变时 $('#fileInput').on('change', function() { var files = $(this)[0].files; for (var i = 0; i < files.length; i++) { var reader = new FileReader(); reader.onload = function(e) { // 在预览区域显示图片 $('#preview').append('<img src="' + e.target.result + '">'); } reader.readAsDataURL(files[i]); } }); // 点击上传按钮时 $('#uploadBtn').on('click', function() { var files = $('#fileInput')[0].files; var formData = new FormData(); for (var i = 0; i < files.length; i++) { formData.append('images[]', files[i]); } // 发送Ajax请求上传图片 $.ajax({ url: 'upload.php', // 替换为你的上传处理脚本地址 type: 'POST', data: formData, processData: false, contentType: false, success: function(response) { // 处理上传成功后的逻辑 console.log(response); }, error: function(xhr, status, error) { // 处理上传失败后的逻辑 console.log(xhr.responseText); } }); }); }); ``` 请注意,上述代码中的上传处理脚本地址应替换为你自己的服务器端脚本地址。服务器端脚本可以接收上传的图片文件,并进行相应的处理,如保存到服务器或存储到数据库等。 这是一个基本的示例,你可以根据自己的需求进行扩展和修改。希望对你有帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PHP隔壁老王邻居

啦啦啦啦啦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值