js实现动态添加上传文件页面

yizhihongxing

实现动态添加上传文件页面,可以通过以下几个步骤完成:

  1. HTML部分

首先,在HTML文件中,提供一个用于点击后触发上传文件对话框的按钮,并准备一个div容器,用于动态添加上传文件表单:

<button id="addFileBtn">添加上传文件</button>
<div id="fileForms"></div>
  1. JS部分

接下来,我们需要编写Javascript代码,实现动态添加上传文件表单。具体实现步骤如下:

  • 当用户点击“添加上传文件”按钮时,我们会通过createElement方法,动态创建一个表单,并将其添加到指定的容器中:
const fileFormsContainer = document.getElementById("fileForms");

document.getElementById("addFileBtn").addEventListener("click", function () {
  // 创建一个文件上传表单
  const fileForm = document.createElement("form");
  fileForm.setAttribute("method", "post");
  fileForm.setAttribute("enctype", "multipart/form-data");

  // 创建文件上传输入框
  const fileInput = document.createElement("input");
  fileInput.setAttribute("type", "file");
  fileInput.setAttribute("name", "file");
  fileInput.setAttribute("required", "true");

  // 创建提交按钮
  const submitBtn = document.createElement("button");
  submitBtn.setAttribute("type", "submit");
  submitBtn.innerText = "上传";

  // 将文件上传输入框和提交按钮添加到文件上传表单中
  fileForm.appendChild(fileInput);
  fileForm.appendChild(submitBtn);

  // 将文件上传表单添加到文件上传表单容器中
  fileFormsContainer.appendChild(fileForm);
});
  • 当用户选择文件并点击提交按钮时,我们会通过fetch方法将文件上传到服务器:
// 监听文件上传表单的submit事件
fileForm.addEventListener("submit", function (event) {
  event.preventDefault();

  const formData = new FormData(fileForm);
  fetch("upload.php", {
    method: "POST",
    body: formData,
  })
    .then((res) => res.json())
    .then((data) => {
      console.log(data);
    })
    .catch((err) => {
      console.error(err);
    });
});

在上述代码中,我们将文件上传表单的submit事件阻止(event.preventDefault()),并使用FormData对象获取表单中上传的文件。然后,我们通过fetch方法将文件上传到服务器,并在上传成功后,打印出服务器返回的响应数据(使用了promises)。

  • 服务器端代码

最后,我们需要在服务器端,接收并处理文件上传请求。下面是一个简单的PHP文件上传代码示例:

<?php
$uploadDir = "uploads/"; // 文件上传目录

if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES["file"])) {
  $file = $_FILES["file"];
  $fileName = $file["name"];
  $filePath = $uploadDir . $fileName;

  // 将文件上传到指定目录
  if (move_uploaded_file($file["tmp_name"], $filePath)) {
    echo json_encode(["status" => "success"]);
  } else {
    echo json_encode(["status" => "error"]);
  }
}
?>

在上述代码中,我们首先定义了上传文件的保存目录($uploadDir),然后判断请求方法是否为POST,并且是否上传了文件。如果满足条件,我们就将文件保存到指定目录中,并通过json_encode方法,将上传结果返回给前端页面。

至此,我们就完成了动态添加上传文件页面的实现。此时,当用户点击“添加上传文件”按钮时,就会动态创建一个上传文件表单,并提供上传文件功能。用户可以通过这个表单,上传自己的文件。

示例1:

首先,我们在HTML页面中,添加一个用于接收上传文件结果的<div>元素:

<button id="addFileBtn">添加上传文件</button>
<div id="fileForms"></div>

<div id="uploadResult"></div>

然后,在Javascript代码中,我们可以将服务器返回的上传结果,动态显示在上述<div>元素中:

.then((data) => {
  const resultDiv = document.getElementById("uploadResult");
  resultDiv.innerText = data.status;
})

示例2:

除了上传文件功能,我们还可以为上传文件表单,添加其他的自定义功能。例如,在下面的示例中,我们为每个上传文件表单,添加了一个删除按钮,用户可以点击该按钮,删除对应的上传文件表单:

const fileFormsContainer = document.getElementById("fileForms");

document.getElementById("addFileBtn").addEventListener("click", function () {
  // 创建一个文件上传表单
  const fileForm = document.createElement("form");
  fileForm.setAttribute("method", "post");
  fileForm.setAttribute("enctype", "multipart/form-data");

  // 创建文件上传输入框
  const fileInput = document.createElement("input");
  fileInput.setAttribute("type", "file");
  fileInput.setAttribute("name", "file");
  fileInput.setAttribute("required", "true");

  // 创建提交按钮和删除按钮
  const submitBtn = document.createElement("button");
  submitBtn.setAttribute("type", "submit");
  submitBtn.innerText = "上传";

  const deleteBtn = document.createElement("button");
  deleteBtn.setAttribute("type", "button");
  deleteBtn.innerText = "删除";
  deleteBtn.addEventListener("click", function () {
    fileFormsContainer.removeChild(fileForm);
  });

  // 将文件上传输入框、提交按钮和删除按钮添加到文件上传表单中
  fileForm.appendChild(fileInput);
  fileForm.appendChild(submitBtn);
  fileForm.appendChild(deleteBtn);

  // 将文件上传表单添加到文件上传表单容器中
  fileFormsContainer.appendChild(fileForm);
});

在上述代码中,我们为每个上传文件表单,添加了一个“删除”按钮,并通过addEventListener方法,为该按钮添加了“点击删除”事件的处理函数。当用户点击“删除”按钮时,相应的上传文件表单,就会被从文件上传表单容器中删除。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现动态添加上传文件页面 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript中的eval()函数详解

    下面我将为你详细讲解”JavaScript中的eval()函数详解”。 介绍 JavaScript的eval()函数是一个全局函数,通过解析一个字符串并将它作为语句执行来计算字符串中的代码。在一些特殊的场景下,eval()函数非常的有用,例如动态地执行动态生成的代码。但是,需要注意的是,过度使用eval()函数容易造成代码安全性和性能问题,因此使用时需慎重。…

    JavaScript 2023年5月27日
    00
  • JavaScript history 对象详解

    JavaScript history 对象详解 什么是 history 对象? history 对象是浏览器的一部分,它存储了用户在浏览器窗口中所访问过的 URL。它提供了一些方法来操作该历史记录,例如前进、后退和重新加载等。当用户点击浏览器的后退或前进按钮时,这些方法就会被触发,并导航到相应的 URL。history 对象是 window 对象的一个属性,…

    JavaScript 2023年5月27日
    00
  • 详解JavaScript for循环中发送AJAX请求问题

    下面是详解JavaScript for循环中发送AJAX请求问题的攻略: 问题描述 在JavaScript中,我们经常需要使用for循环来遍历数组或对象,如果在循环体内发送多个AJAX请求会遇到什么问题呢? for (var i = 0; i < arr.length; i++) { $.ajax({ url: ‘http://example.com/…

    JavaScript 2023年6月11日
    00
  • JavaScript使用闭包模仿块级作用域操作示例

    JavaScript使用闭包模拟块级作用域操作的示例可能是一个新主题。在这里提供一个完整的攻略,包括定义和用法,以及一个具体示例。 什么是闭包 JavaScript中的闭包是一种函数,它可以访问自身作用域之外的变量。实际上,函数创建了一个内部作用域和一个变量对象。这个变量对象包含所有的局部变量,参数等,而且变量对象是由函数的作用域链所确定的。因此,通过访问该…

    JavaScript 2023年6月10日
    00
  • Javascript日期格式化format函数的使用方法

    下面是关于Javascript日期格式化format函数的使用方法的完整攻略。 格式化函数介绍 JavaScript 提供了一个内置的 Date 对象,它用于处理日期和时间。该对象提供了许多方法来操作日期和时间,并且通过使用格式化函数可以将日期和时间格式化显示。 JavaScript 中内置的日期格式化函数为 toLocaleDateString() 和 t…

    JavaScript 2023年5月27日
    00
  • 什么是JavaScript

    JavaScript是一种脚本语言,是用于Web开发的一种编程语言,在网页中主要负责实现交互效果和动态效果,如:表单校验、动画效果、音频视频控制、数据可视化等功能。 JavaScript最初由Netscape公司开发,在1995年被首次引入网页中,从此开始成为解决客户端Web开发的主要语言之一。现在,JavaScript已经发展成为一种非常强大、灵活、广泛应…

    JavaScript 2023年5月17日
    00
  • javascript的日期对象、数组对象、二维数组使用说明

    Javascript日期对象 Javascript的日期对象是一个用于处理日期和时间的内置对象。例如,可以使用它来获取当前时间、设置日期,比较日期等。以下是一些日期对象的方法: 创建日期对象 可以通过使用new关键字和Date()函数创建日期对象: var now = new Date(); //创建一个日期对象,获取当前时间 console.log(now…

    JavaScript 2023年6月10日
    00
  • js判断密码强度的方法

    下面是我对“JS判断密码强度的方法”的详细讲解: 什么是密码强度 在IT安全中,密码强度通常表示密码难度的大小。密码强度越高,密码的破解难度就越高,数据的安全性就越高。一个安全的密码强度应该至少包括数字、字母和符号,并且长度应该大于8位。 JS 判断密码强度的方法 1. 简单版判断密码强度 最简单的判断密码强度的方法就是根据密码长度来决定密码强度。以下是简单…

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