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)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript相等运算符的九条规则示例详解

    当我们在编写JavaScript代码时,常常需要判断两个变量是否相等,这时候就需要使用相等运算符,即==和===。但是,由于JavaScript的这两种相等运算符在使用时存在很多陷阱和特殊情况,所以需要我们特别注意。以下是详细的JavaScript相等运算符的九条规则和示例详解。 规则一:如果两个变量类型不同,则不相等 例如,以下代码的输出结果为false:…

    JavaScript 2023年5月28日
    00
  • 在html中添加script脚本的2种方法和注意事项

    在HTML中,我们可以通过添加<script>标签来添加JavaScript脚本。下面分别介绍两种添加<script>标签的方法以及需要注意的事项。 方法一:直接添加在HTML文件中 在HTML文件中,可以使用<script>标签来内联嵌入JavaScript代码。可以把脚本放在<body>标签或<hea…

    JavaScript 2023年5月27日
    00
  • JavaScript数组合并的8种常见方法小结

    以下是对“JavaScript数组合并的8种常见方法小结”的完整攻略: 1. concat()方法 定义:concat()方法用于连接两个或多个数组。该方法并不会改变原数组,而是返回一个新的数组,包含所有被连接的数组的元素。 语法:arr.concat(array1, array2, …, arrayX) 示例: const arr1 = [1, 2, …

    JavaScript 2023年5月27日
    00
  • 你所不了解的javascript操作DOM的细节知识点(一)

    下面就为大家详细讲解“你所不了解的JavaScript操作DOM的细节知识点(一)”的完整攻略。 什么是DOM? DOM(文档对象模型)是指一种用于在HTML、XML等文档中描述元素的层次结构的API。通过DOM,JavaScript可以获取和修改文档的内容和结构。 元素节点和文本节点 在DOM中,每一个HTML元素都被表示为一个元素节点(element n…

    JavaScript 2023年6月10日
    00
  • 理解JavaScript中的事件

    下面是详细讲解“理解JavaScript中的事件”的完整攻略。 什么是事件? 事件是指用户在网页上进行操作时,浏览器自动识别的行为,比如鼠标的点击、移动,键盘的按下、松开等。JavaScript中的事件是指用户在网页上的操作行为,我们可以通过JavaScript代码来定义这些操作行为,让网页在用户进行某些操作时自动触发代码来实现一些特定的功能。 JavaSc…

    JavaScript 2023年6月10日
    00
  • Javascript ES6中数据类型Symbol的使用详解

    Javascript ES6中数据类型Symbol的使用详解 什么是Symbol? Symbol是ES6中新增的一种数据类型,它表示独一无二的值。可以理解为是一个独特的标识符,可以用来防止属性名的重复。Symbol的主要作用是用于对象的属性名,它们可以保证不会出现重复的属性名。 如何使用Symbol? 创建Symbol 使用Symbol构造函数可以创建一个新…

    JavaScript 2023年6月10日
    00
  • JavaScript实现随机码的生成与校验

    生成随机码的实现方法有很多种,下面我将详细讲解其中一种实现方式,包括生成随机码和校验随机码两个部分。 JavaScript实现随机码的生成 第一步 生成指定长度的随机码,这里我们选择将随机码制定为6位,可以以下面的代码实现: function generateRandomCode() { // 定义可能出现在随机码中的字符 var possible = &q…

    JavaScript 2023年5月19日
    00
  • 一实用的实现table排序的Javascript类库

    我们来讲解一下如何实现table排序的Javascript类库。 概述 在网页中经常会用到表格(table),而对于一大堆数据,我们需要以某种特定的方式来进行排序,这时候就需要一个table排序的Javascript类库。下面,我们将通过一个简单的示例来讲解如何使用该类库实现排序功能。 准备工作 我们需要在HTML页面中引入jQuery框架以及js库文件so…

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