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


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

    目录

    一、表单单文件上传

    1、上传页面

    2、接受文件上传php

    二、表单多文件上传

    1、上传页面

    2、接受文件上传php 

    三、表单异步xhr文件上传

    1、上传页面

    2、接受文件上传php  

    四、表单异步ajax文件上传 

    1、上传页面

    2、接受文件上传php   


    一、表单单文件上传
    1、上传页面
    1. html>
    2. <html>
    3. <meta charset="UTF-8">
    4. <head>
    5. <title>文件上传title>
    6. head>
    7. <body>
    8. <h1>文件上传h1>
    9. <form action="upload.php" method="POST" enctype="multipart/form-data">
    10. <input type="file" name="fileToUpload">
    11. <input type="submit" value="上传文件">
    12. form>
    13. body>
    14. html>
    2、接受文件上传php
    1. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    2. $targetDir = "uploads/"; // 上传文件保存的目录
    3. $targetFile = $targetDir . basename($_FILES["fileToUpload"]["name"]);
    4. $uploadOk = 1; // 上传状态,1表示成功,0表示失败
    5. $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); // 上传文件的扩展名
    6. // 检查文件是否为真实的图像文件
    7. if (isset($_POST["submit"])) {
    8. $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    9. if ($check !== false) {
    10. echo "文件是一个有效的图像 - " . $check["mime"] . ".";
    11. $uploadOk = 1;
    12. } else {
    13. echo "文件不是一个有效的图像.";
    14. $uploadOk = 0;
    15. }
    16. }
    17. // 检查文件是否已存在
    18. if (file_exists($targetFile)) {
    19. echo "对不起,文件已存在.";
    20. $uploadOk = 0;
    21. }
    22. // 检查文件大小
    23. if ($_FILES["fileToUpload"]["size"] > 500000) {
    24. echo "对不起,文件太大.";
    25. $uploadOk = 0;
    26. }
    27. // 允许上传的文件格式
    28. $allowedExtensions = array("jpg", "jpeg", "png", "gif");
    29. if (!in_array($imageFileType, $allowedExtensions)) {
    30. echo "对不起,仅允许上传 JPG, JPEG, PNG 和 GIF 文件.";
    31. $uploadOk = 0;
    32. }
    33. // 检查上传状态
    34. if ($uploadOk == 0) {
    35. echo "对不起,文件上传失败.";
    36. } else {
    37. if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
    38. echo "文件上传成功.";
    39. } else {
    40. echo "对不起,文件上传失败.";
    41. }
    42. }
    43. }
    44. ?>

     

    二、表单多文件上传
    1、上传页面
    1. html>
    2. <html>
    3. <meta charset="UTF-8">
    4. <head>
    5. <title>文件上传示例title>
    6. head>
    7. <body>
    8. <form action="upload.php" method="post" enctype="multipart/form-data">
    9. <input type="file" name="files[]" multiple>
    10. <input type="submit" value="上传文件">
    11. form>
    12. body>
    13. html>
    2、接受文件上传php 
    1. if ($_SERVER["REQUEST_METHOD"] == "POST") {
    2. $files = $_FILES["files"];
    3. // 检查是否有文件被上传
    4. if (!empty($files)) {
    5. // 循环处理每个上传的文件
    6. for ($i = 0; $i < count($files["name"]); $i++) {
    7. $file_name = $files["name"][$i];
    8. $file_tmp = $files["tmp_name"][$i];
    9. $file_size = $files["size"][$i];
    10. $file_error = $files["error"][$i];
    11. // 检查文件是否上传成功
    12. if ($file_error == UPLOAD_ERR_OK) {
    13. // 指定文件保存的路径和文件名
    14. $target_dir = "uploads/";
    15. $target_file = $target_dir . basename($file_name);
    16. // 将文件从临时目录移动到指定路径
    17. if (move_uploaded_file($file_tmp, $target_file)) {
    18. echo "文件上传成功: " . $file_name . "
      "
      ;
    19. } else {
    20. echo "文件上传失败: " . $file_name . "
      "
      ;
    21. }
    22. } else {
    23. echo "文件上传错误: " . $file_name . "
      "
      ;
    24. }
    25. }
    26. } else {
    27. echo "没有选择要上传的文件";
    28. }
    29. }
    30. ?>
    三、表单异步xhr文件上传
    1、上传页面
    1. html>
    2. <html>
    3. <meta charset="UTF-8">
    4. <head>
    5. <title>文件上传title>
    6. head>
    7. <body>
    8. <h1>文件上传h1>
    9. <input type="file" id="fileToUpload" multiple>
    10. <button onclick="uploadFiles()">上传文件button>
    11. <div id="progress">div>
    12. <div id="response">div>
    13. <script>
    14. function uploadFiles() {
    15. var input = document.getElementById('fileToUpload');
    16. var files = input.files;
    17. var formData = new FormData();
    18. for (var i = 0; i < files.length; i++) {
    19. var file = files[i];
    20. formData.append('files[]', file);
    21. }
    22. var xhr = new XMLHttpRequest();
    23. xhr.onreadystatechange = function() {
    24. if (xhr.readyState === 4 && xhr.status === 200) {
    25. document.getElementById('response').innerHTML = xhr.responseText;
    26. }
    27. };
    28. xhr.upload.onprogress = function(event) {
    29. if (event.lengthComputable) {
    30. var progress = (event.loaded / event.total) * 100;
    31. document.getElementById('progress').innerHTML = '上传进度:' + progress + '%';
    32. }
    33. };
    34. xhr.open('POST', 'upload.php', true);
    35. xhr.send(formData);
    36. }
    37. script>
    38. body>
    39. html>
    2、接受文件上传php  
    1. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    2. $targetDir = "uploads/"; // 上传文件保存的目录
    3. if (!file_exists($targetDir)) {
    4. mkdir($targetDir, 0777, true); // 如果目录不存在,则创建目录
    5. }
    6. $uploadOk = 1; // 上传状态,1表示成功,0表示失败
    7. foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) {
    8. $targetFile = $targetDir . $_FILES['files']['name'][$key];
    9. $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); // 上传文件的扩展名
    10. // 检查文件是否已存在
    11. if (file_exists($targetFile)) {
    12. echo "对不起,文件已存在.";
    13. $uploadOk = 0;
    14. }
    15. // 允许上传的文件格式
    16. $allowedExtensions = array("jpg", "jpeg", "png", "gif");
    17. if (!in_array($imageFileType, $allowedExtensions)) {
    18. echo "对不起,仅允许上传 JPG, JPEG, PNG 和 GIF 文件.";
    19. $uploadOk = 0;
    20. }
    21. // 检查上传状态
    22. if ($uploadOk == 0) {
    23. echo "对不起,文件上传失败.";
    24. } else {
    25. if (move_uploaded_file($tmp_name, $targetFile)) {
    26. echo "文件上传成功.";
    27. } else {
    28. echo "对不起,文件上传失败.";
    29. }
    30. }
    31. }
    32. }
    33. ?>
    四、表单异步ajax文件上传 
    1、上传页面
    1. html>
    2. <html>
    3. <meta charset="UTF-8">
    4. <head>
    5. <title>文件上传示例title>
    6. <script src="https://code.jquery.com/jquery-3.6.0.min.js">script>
    7. head>
    8. <body>
    9. <form id="uploadForm" enctype="multipart/form-data">
    10. <input type="file" name="fileToUpload" id="fileToUpload">
    11. <button type="submit">上传button>
    12. form>
    13. <script>
    14. $(document).ready(function() {
    15. $('#uploadForm').submit(function(event) {
    16. event.preventDefault();
    17. var formData = new FormData(this);
    18. $.ajax({
    19. url: 'upload.php',
    20. type: 'POST',
    21. data: formData,
    22. dataType: 'text',
    23. processData: false,
    24. contentType: false,
    25. success: function(response) {
    26. console.log('文件上传成功');
    27. },
    28. error: function() {
    29. console.log('文件上传失败');
    30. }
    31. });
    32. });
    33. });
    34. script>
    35. body>
    36. html>
    2、接受文件上传php   
    1. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    2. if (isset($_FILES['fileToUpload'])) {
    3. $file = $_FILES['fileToUpload'];
    4. // 文件上传成功
    5. if ($file['error'] === UPLOAD_ERR_OK) {
    6. $fileName = $file['name'];
    7. $tempPath = $file['tmp_name'];
    8. // 将文件移动到目标文件夹
    9. move_uploaded_file($tempPath, 'uploads/' . $fileName);
    10. echo '文件上传成功';
    11. } else {
    12. echo '文件上传失败';
    13. }
    14. } else {
    15. echo '未选择文件';
    16. }
    17. }
    18. ?>

  • 相关阅读:
    突破职场难题有效沟通、应对压力、提升能力,实现职场成功
    RADIUS协议基础原理
    Nginx:尚硅谷2022版Nginx笔记
    Vue3学习笔记:ref函数、reactive函数等常用Composition API、生命周期,Fragment、teleport等新的组件用法记录
    docker入门
    Jeff Dean:机器学习在硬件设计中的潜力
    Spring核心——SPEL Bean定义中的表达式、实例应用
    LeetCode-77-组合
    jenkins+git持续集成配置
    eslint 规则
  • 原文地址:https://blog.csdn.net/weixin_39934453/article/details/133695771