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

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

  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)
上一篇 3天前
下一篇 3天前

相关文章

  • 计算100000数组js脚本的执行时间

    计算一个JS脚本的执行时间通常可使用console.time()函数和console.timeEnd()函数来进行。 以下是计算100000数组JS脚本执行时间的完整攻略: 1. 创建测试数组 在JS中,我们可以使用Array.from()函数创建一个指定长度和指定初始值的数组,如下所示: const arr = Array.from({ length: 1…

    JavaScript 2天前
    00
  • html5+javascript实现简单上传的注意细节

    当我们需要在网站中添加文件上传功能时,可以使用HTML5和JavaScript来实现。但是在实现过程中,需要注意一些细节才能确保上传功能的稳定性和安全性。以下是实现简单上传的注意细节攻略: HTML5中的文件上传 HTML5通过 input 标签的 type=”file” 属性提供了文件上传功能。以下是HTML5文件上传的注意事项: 1.设定合适的 acce…

    JavaScript 2天前
    00
  • JavaScript实现简单的日历效果

    下面是具体的攻略。 1. 理清需求和思路 在实现日历效果时,我们需要注意以下几个点: 展示一个月的日历,包含每一天的日期和星期几; 给用户提供切换月份的功能; 当天的日期需要特殊标识。 为了实现日历效果,我们需要先通过 JavaScript 获取到当前的年份和月份,然后计算出这个月有多少天,以及这个月的第一天是星期几。最后,我们通过循环渲染 HTML 标签来…

    JavaScript 2天前
    00
  • JavaScript中标识符提升问题

    JavaScript中标识符提升问题是指在JavaScript代码中,变量或函数在声明之前仍然可以被引用和使用的问题。这是JavaScript语言本身的一个特性,不是一个错误。这种特性也被称为提升(Hoisting)。 在JavaScript代码中,当我们声明一个变量或函数时,它们会在代码执行之前被“提升”到代码的顶部。这意味着我们可以在声明之前使用它们。但…

    JavaScript 2023年5月18日
    00
  • JavaScript对象学习小结

    下面是关于“JavaScript对象学习小结”完整攻略的详细讲解。 一、对象 JavaScript 中的对象是一组属性的集合,其中每个属性通过键与值相关联。可以通过多种方式创建对象。 1.1 对象的创建 可以使用对象字面量创建对象,对象字面量是一个逗号分隔的键值对的列表,放在花括号中。 例如: var student = { name: ‘Tom’, age…

    JavaScript 3天前
    00
  • JavaScript中的函数式编程详解

    JavaScript中的函数式编程详解 函数式编程是一种编程范式,它将控制状态和变化的副作用最小化,并强调使用函数来解决问题。在JavaScript中,函数作为第一类对象已广泛使用,这使得函数式编程成为编写可维护和可扩展代码的理想选择。 特点 函数式编程有以下几个特点: 函数是一等公民,可以作为变量传递和返回值 纯函数,不改变外部状态,也不受全局状态的影响 …

    JavaScript 2天前
    00
  • IE8提示Invalid procedure call or argument 异常的解决方法

    标题:IE8提示Invalid procedure call or argument 异常的解决方法 问题描述:在使用IE8浏览器时,可能会出现Invalid procedure call or argument 异常。该异常表示程序调用了一个无效的过程或参数。这种情况下,用户将无法继续访问网站或执行其他操作,因此需要解决该异常。本文将介绍一些可以解决此异常…

    JavaScript 1天前
    00
  • 通过实例解析json与jsonp原理及使用方法

    通过实例解析JSON与JSONP原理及使用方法 什么是JSON JSON(JavaScript Object Notation)即 JavaScript 对象表示法,是一种轻量级的数据交换格式,易于阅读和编写。JSON采用基础元素(值value,列表list/array,对象object)来描述数据对象,因此可以表示复杂的数据结构。 JSON的基本语法 在J…

    JavaScript 2天前
    00
  • javascript基础知识整理

    JavaScript 基础知识整理 简介 JavaScript 是一种轻量级的脚本语言,用于为网站添加交互性和响应式。它被广泛用于前端开发、后端开发以及移动应用程序开发。 本篇文章将对 JavaScript 的基础知识进行整理,希望可以让初学者快速掌握 JavaScript 的核心概念。 数据类型 JavaScript 中有七种基本数据类型:undefine…

    JavaScript 3天前
    00
  • JavaScript Math 对象

    JavaScript中的Math对象是一个内置对象,提供了一组数学函数和常量。这些函数和常量可以用于执行各种数学计算。以下是关于Math对象的完整攻略,包括两个示例。 JavaScript Math对象 JavaScript中的Math对象是一个内置对象,提供了一组数学函数和常量。这些函数和常量可以用于执行各种数学计算。 下面是Math对象的一些常用函数: …

    JavaScript 2023年5月11日
    00