PHP+Ajax+JS实现多图上传

下面我将为您详细讲解“PHP+Ajax+JS实现多图上传”的完整攻略。

总体思路

实现多图上传,我们需要通过Ajax技术将多张图片逐一传递到服务器端,再通过PHP将图片保存到指定目录中。下面是详细的步骤:

  1. 使用HMTL5的file类型的input框架,在客户端实现图片上传。
  2. 使用JavaScript遍历的方式,依次将图片上传到服务器端。
  3. JavaScript调用Ajax技术,将图片文件传递给服务器端。
  4. 服务器端接收Ajax传递过来的图片文件并保存到指定目录。
  5. 将上传结果以JSON格式返回给客户端。

示例1

以下是一个简单但完整的多图上传示例,前端使用原生HTML5+JS,后端使用PHP实现。

前端代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>多图上传示例</title>
</head>
<body>
  <input type="file" id="file" name="file" multiple>
  <button type="button" onclick="upload()">上传</button>
  <div id="result"></div>

  <script>
  function upload() {
    var files = document.getElementById('file').files;
    var formData = new FormData();
    for (var i = 0; i < files.length; i++) {
      formData.append('file[]', files[i]);
    }

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () {
      if (xhr.readyState == 4 && xhr.status == 200) {
        var result = JSON.parse(xhr.responseText);
        var div = document.getElementById('result');
        div.innerHTML = '';
        for (var i = 0; i < result.length; i++) {
          div.innerHTML += '<img src="' + result[i] + '">';
        }
      }
    };
    xhr.open('POST', 'upload.php');
    xhr.send(formData);
  }
  </script>
</body>
</html>

后端代码:

<?php
$allowedExts = array('jpg', 'jpeg', 'gif', 'png');
$uploadDir = 'uploads/';
$uploadedFiles = array();
foreach ($_FILES['file']['name'] as $key => $name) {
  $tmp_name = $_FILES['file']['tmp_name'][$key];
  $extension = substr($name, strrpos($name, '.') + 1);
  if (!in_array($extension, $allowedExts)) {
    continue;
  }
  $filePath = $uploadDir . uniqid() . '.' . $extension;
  if (move_uploaded_file($tmp_name, $filePath)) {
    array_push($uploadedFiles, $filePath);
  }
}
echo json_encode($uploadedFiles);
?>

示例2

下面是使用jQuery实现的多图上传示例。

前端代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>多图上传示例</title>
  <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
  <input type="file" id="file" name="file" multiple>
  <button type="button" onclick="upload()">上传</button>
  <div id="result"></div>

  <script>
  function upload() {
    var formData = new FormData();
    $('input[type=file]').each(function() {
        var files = this.files;
        for (var i = 0; i < files.length; i++) {
          formData.append('file[]', files[i]);
        }
    });
    $.ajax({
      url: 'upload.php',
      type: 'POST',
      data: formData,
      dataType: 'json',
      processData: false,
      contentType: false,
      success: function(result) {
        var div = $('#result');
        div.empty();
        for (var i = 0; i < result.length; i++) {
          div.append('<img src="' + result[i] + '">');
        }
      }
    });
  }
  </script>
</body>
</html>

后端代码和示例1相同。

希望这份攻略能对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP+Ajax+JS实现多图上传 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • ES6新特性六:promise对象实例详解

    ES6新特性六:promise对象实例详解 Promise对象是ES6新增的一种异步编程解决方案,它解决了异步编程中回调函数嵌套过深、错误处理繁琐等问题。本文将详细介绍Promise对象的创建、状态、方法及使用。 Promise对象的创建 Promise对象是通过new关键字和Promise构造函数创建的,它接受一个函数作为参数,该函数有两个形参resolv…

    JavaScript 2023年6月11日
    00
  • ajax 服务器文本框自动填值

    下面我来详细讲解“ajax 服务器文本框自动填值”的完整攻略。 1. 什么是 AJAX? Ajax 是一种用于创建快速动态网页应用程序的技术。通过使用 Ajax,可以实现无刷新更新页面内容,从而提高用户的交互体验。 2. AJAX如何使文本框自动填值? 使用 Ajax 可以通过向服务器发送异步请求,获取服务器返回的数据,并将数据填充到页面中。因此,我们可以通…

    JavaScript 2023年6月11日
    00
  • Dialog底部弹出自定义view并且伴随动画弹出和消失

    要实现Dialog底部弹出自定义view并且伴随动画弹出和消失,我们可以使用以下步骤: 自定义Dialog布局:创建一个XML文件来定义我们Dialog的布局,包括我们想要显示的视图。 示例1: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu…

    JavaScript 2023年6月10日
    00
  • 浅谈一下JavaScript与C++的差异

    关于JavaScript和C++的差异,我可以从以下几个方面进行讲解: 1. 语法差异 1.1 语言特性 JavaScript是一门脚本语言,它的特点是动态类型、解释执行、动态创建对象等,对于字符串拼接、数组操作、函数式编程等有较好的支持。而C++是一门编译型语言,它的特点是静态类型、编译执行、面向对象等,对于高效性、硬件操作等有较好的支持。 1.2 基本语…

    JavaScript 2023年5月27日
    00
  • JavaScript入门初体验书写方式

    关于“JavaScript入门初体验书写方式”的攻略,我可以作如下的详细讲解: 1. 引入JavaScript 想要使用JavaScript,首先需要将JavaScript代码引入HTML文档中,可以用以下的方法: <script src="js/myScript.js"></script> 其中,src指定需要引…

    JavaScript 2023年5月18日
    00
  • JavaScript性能陷阱小结(附实例说明)

    JavaScript 性能陷阱是前端开发过程中常见的问题之一。为了避免这些问题,我们需要了解 JavaScript 性能陷阱的原因,并采取相应的措施,优化页面性能。下面是一些比较常见的 JavaScript 性能陷阱及相应的解决方法。 避免使用with关键字 with 语句将一个对象添加到作用域链中,并将该对象的属性作为局部变量,这样就可以直接访问对象属性。…

    JavaScript 2023年5月28日
    00
  • javascript的函数第2/3页

    让我们来详细讲解“JavaScript的函数第2/3页”的完整攻略。 函数的声明 函数是 JavaScript 中的重要组成部分,它可以使我们编写可重用的代码。在 JavaScript 中,函数有两种声明方式:函数声明和函数表达式。 函数声明 函数声明是最常用和最熟悉的方式。它使用 function 关键字来定义一个函数,并给它取一个名称。语法如下: fun…

    JavaScript 2023年5月18日
    00
  • json字符串传到前台input的方法

    将JSON字符串传到前台input可以通过JavaScript的方式实现。主要分为两个步骤: 将JSON字符串赋值给JavaScript变量或对象 将变量或对象中的值赋值给input 下面分别详细说明这两个步骤。 将JSON字符串赋值给JavaScript变量或对象 首先,我们需要将JSON字符串转换为JavaScript对象。这可以通过JSON.parse…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部