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日

相关文章

  • JsonProperty 的使用方法详解

    JsonProperty 是一个用于在 C# 中将属性或字段映射到 JSON 属性的属性。在 JSON 序列化和反序列化期间,属性和字段将映射到 JSON 对象的属性和字段。本攻略将提供JsonProperty的使用方法详解。 1. 引用 Newtonsoft.Json 库 JsonProperty 属性在 Newtonsoft.Json 库中,因此首先要确…

    JavaScript 2023年5月27日
    00
  • JavaScript字符串对象substring方法入门实例(用于截取字符串)

    JavaScript字符串对象substring方法入门实例(用于截取字符串) 什么是substring方法 JavaScript字符串对象的substring()方法是用于截取字符串的一种方式,该方法可以返回一个新的字符串,其内容是从原始字符串中指定的位置开始到另一个指定位置之间的字符。 substring方法的语法 字符串对象substring方法具有以…

    JavaScript 2023年5月28日
    00
  • Python对象与引用的介绍

    Python对象与引用的介绍 在Python中,一切都是对象。对象(Object)是Python中最重要的概念之一,懂得如何管理对象在Python编程中至关重要。Python中的所有变量都是对象的一个引用,这就意味着当我们将一个对象赋值给一个变量时,实际上是将这个对象的引用赋值给变量。这也就是为什么很多人将Python描述成一门“动态”“弱化”的语言,因为我…

    JavaScript 2023年6月11日
    00
  • php IIS日志分析搜索引擎爬虫记录程序第1/2页

    下面是PHP IIS日志分析搜索引擎爬虫记录程序第1/2页的完整攻略,包含以下几个步骤: 1. 配置IIS日志文件 在进行日志分析前,我们需要在IIS上配置日志文件,以记录用户访问网站的详细信息。可以按照以下步骤进行配置: 打开IIS管理器,在左侧面板中选择您要配置的站点,然后点击“logging”选项卡。 在日志文件目录下新建一个文件夹,用于存放日志文件。…

    JavaScript 2023年5月28日
    00
  • input框中的name和id的区别

    当我们使用HTML表单时,为了方便后台处理表单输入数据,需要为表单中的input组件指定name属性值。同时,在页面的CSS和JavaScript中,也需要为input组件指定id属性值,以方便通过DOM操作网页元素。 name属性 作用 name属性指定表单字段的名称,该属性值会被提交到后端服务器用于请求参数的获取。 示例 <form method=…

    JavaScript 2023年6月10日
    00
  • javascript中interval与setTimeOut的区别示例介绍

    让我们来详细讲解一下“JavaScript中Interval与SetTimeout的区别示例介绍”。 标题 JavaScript中Interval与SetTimeout的区别示例介绍 正文 JavaScript中的Interval与SetTimeout都是用来实现定时器的方法,但是二者之间还是有一些区别的。 SetTimeout SetTimeout的作用是…

    JavaScript 2023年6月10日
    00
  • JavaScript箭头函数的五种使用方法及三点注意事项

    下面我就详细讲解一下“JavaScript箭头函数的五种使用方法及三点注意事项”的攻略。 JavaScript箭头函数的五种使用方法 1. 简单的箭头函数 简单的箭头函数是指只有一个参数且只有一条语句的箭头函数。例如,以下代码: const greeting = name => `Hello, ${name}!`; console.log(greeti…

    JavaScript 2023年5月27日
    00
  • angularjs定时任务的设置与清除示例

    AngularJS提供了$interval和$timeout两种方式来实现定时任务的设置和清除。 $interval用法示例如下: angular.module(‘myApp’, []) .controller(‘myController’, [‘$interval’, function($interval){ var vm = this; vm.count…

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