js HTML5上传示例代码完整版

yizhihongxing

关于“js HTML5上传示例代码完整版”的完整攻略,以下是我整理的内容:

一、前言

在讲如何使用“js HTML5上传示例代码完整版”之前,我们先来了解一下什么是HTML5文件上传。HTML5文件上传是一种现代化、快速、可靠的文件上传方式,与之前的Flash上传相比具有更高效的上传速度和更高的可靠性。

二、主要步骤

使用“js HTML5上传示例代码完整版”进行文件上传,主要分为以下几步:

  1. 创建上传表单
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>HTML5文件上传示例</title>
  </head>
  <body>
    <form action="upload.php" method="POST" enctype="multipart/form-data">
      <input type="file" name="file" id="file" />
      <input type="submit" value="上传" />
    </form>
  </body>
</html>

这里我们创建了一个简单的上传表单,包含一个文件选择框和一个提交按钮,需要注意的是,表单的enctype属性必须设置为multipart/form-data,否则无法上传文件。

  1. 编写前端上传代码
function uploadFile() {
  var file = document.getElementById("file").files[0];
  var xhr = new XMLHttpRequest();

  xhr.upload.addEventListener(
    "progress",
    function (e) {
      if (e.lengthComputable) {
        var percentComplete = (e.loaded / e.total) * 100;
        console.log(percentComplete + "% uploaded");
      }
    },
    false
  );

  xhr.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
      console.log("上传成功");
    }
  };

  xhr.open("POST", "upload.php", true);

  var formData = new FormData();
  formData.append("file", file);

  xhr.send(formData);
}

这里我们编写了一个名为uploadFile的函数,该函数被调用时,会自动获取用户在表单中选择的文件,并创建一个XMLHttpRequest对象,通过该对象实现文件上传。

在xhr.upload.addEventListener部分,我们对上传进度进行监听,以实现实时显示上传进度的功能。

在xhr.onreadystatechange部分,我们对上传成功后的响应进行处理。

  1. 编写服务器端代码

这里我们以PHP为例,编写服务器端代码:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// 检查文件大小,不得大于10MB
if ($_FILES["file"]["size"] > 10000000) {
  echo "文件过大";
  $uploadOk = 0;
}

// 检查文件格式,只允许上传jpg、jpeg、png、gif格式的文件
if($imageFileType != "jpg" && $imageFileType != "jpeg" && $imageFileType != "png" && $imageFileType != "gif" ) {
  echo "只允许上传JPG、JPEG、PNG、GIF格式文件";
  $uploadOk = 0;
}

if ($uploadOk == 0) {
  echo "上传失败";
} else {
  if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
    echo "上传成功";
  } else {
    echo "上传失败";
  }
}
?>

这里我们首先对上传的文件进行了大小和格式的检查,以保证上传的文件符合要求。然后,我们使用move_uploaded_file函数将上传的文件移动到指定的文件夹中。

三、示例说明

接下来,我们通过两个示例详细说明如何使用“js HTML5上传示例代码完整版”。

示例一

我们要上传一个名称为“test.jpg”的文件,并将其保存在服务器上的“uploads”文件夹中。

首先,我们需要在HTML文件中添加如下代码:

<form>
  <input type="file" name="file" id="file" />
  <input type="button" value="上传" onclick="uploadFile()" />
</form>

然后,在JavaScript文件中编写如下代码:

function uploadFile() {
  var file = document.getElementById("file").files[0];
  var xhr = new XMLHttpRequest();

  xhr.upload.addEventListener(
    "progress",
    function (e) {
      if (e.lengthComputable) {
        var percentComplete = (e.loaded / e.total) * 100;
        console.log(percentComplete + "% uploaded");
      }
    },
    false
  );

  xhr.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
      console.log("上传成功");
    }
  };

  xhr.open("POST", "upload.php", true);

  var formData = new FormData();
  formData.append("file", file);

  xhr.send(formData);
}

最后,在服务器端PHP文件中添加如下代码:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// 检查文件大小,不得大于10MB
if ($_FILES["file"]["size"] > 10000000) {
  echo "文件过大";
  $uploadOk = 0;
}

// 检查文件格式,只允许上传jpg、jpeg、png、gif格式的文件
if($imageFileType != "jpg" && $imageFileType != "jpeg" && $imageFileType != "png" && $imageFileType != "gif" ) {
  echo "只允许上传JPG、JPEG、PNG、GIF格式文件";
  $uploadOk = 0;
}

if ($uploadOk == 0) {
  echo "上传失败";
} else {
  if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
    echo "上传成功";
  } else {
    echo "上传失败";
  }
}
?>

示例二

我们要实现批量上传,即用户可以同时上传多个文件,将它们保存在服务器上的“uploads”文件夹中。

首先,在HTML文件中添加如下代码:

<form>
  <input type="file" name="file[]" id="file" multiple />
  <input type="button" value="上传" onclick="uploadFile()" />
</form>

注意这里我们使用了multiple属性来允许用户上传多个文件。

然后,在JavaScript文件中编写如下代码:

function uploadFile() {
  var files = document.getElementById("file").files;
  var xhr = new XMLHttpRequest();

  xhr.upload.addEventListener(
    "progress",
    function (e) {
      if (e.lengthComputable) {
        var percentComplete = (e.loaded / e.total) * 100;
        console.log(percentComplete + "% uploaded");
      }
    },
    false
  );

  xhr.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
      console.log("上传成功");
    }
  };

  xhr.open("POST", "upload.php", true);

  var formData = new FormData();
  for (var i = 0; i < files.length; i++) {
    formData.append("file[]", files[i]);
  }

  xhr.send(formData);
}

最后,在服务器端PHP文件中添加如下代码:

<?php
$target_dir = "uploads/";
$uploadOk = 1;

foreach ($_FILES["file"]["error"] as $key => $error) {
  if ($error == UPLOAD_ERR_OK) {
    $temp_name = $_FILES["file"]["tmp_name"][$key];
    $name = $_FILES["file"]["name"][$key];
    $target_file = $target_dir . basename($name);
    $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    // 检查文件大小,不得大于10MB
    if ($_FILES["file"]["size"][$key] > 10000000) {
      echo $name . " 文件过大";
      $uploadOk = 0;
    }
    // 检查文件格式,只允许上传jpg、jpeg、png、gif格式的文件
    if($imageFileType != "jpg" && $imageFileType != "jpeg" && $imageFileType != "png" && $imageFileType != "gif" ) {
      echo $name . " 只允许上传JPG、JPEG、PNG、GIF格式文件";
      $uploadOk = 0;
    }
    if ($uploadOk == 0) {
      echo "上传失败";
    } else {
      if (move_uploaded_file($temp_name, $target_file)) {
        echo $name . " 上传成功";
      } else {
        echo $name . " 上传失败";
      }
    }
  }
}
?>

四、总结

通过以上的两个示例,我们可以看出使用“js HTML5上传示例代码完整版”进行文件上传,需要注意以下几点:

  1. HTML表单需要设置enctype属性为multipart/form-data;
  2. 使用JavaScript代码创建XMLHttpRequest对象实现文件上传,需要注意添加事件监听,以实现实时显示上传进度;
  3. 服务端代码需要对上传的文件进行大小和格式检查,以确保上传的文件符合要求。

好了,以上就是有关“js HTML5上传示例代码完整版”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js HTML5上传示例代码完整版 - Python技术站

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

相关文章

  • JavaScript中对象属性的添加和删除示例

    请允许我详细讲解一下如何在JavaScript中添加和删除对象属性。 添加对象属性 直接添加属性 直接在对象上添加属性,可以通过 .(点) 或 [ ] 符号来访问或定义属性,示例如下: const person = { name: "张三", age: 18 }; person.gender = "male"; // …

    JavaScript 2023年5月27日
    00
  • 文件的读出 编辑 管理

    文件的读出 编辑 管理 文件的读出 编辑 管理指的是针对文本文件进行查看、修改和删除操作。在操作时,我们可以使用命令行或者各种编辑器来实现对文件的管理。 文件的读出 我们可以使用命令行端(Linux或者Windows命令行)来实现对文件的读出。具体操作如下: 打开命令行(Linux终端或者Windows命令提示符)。 进入到对应的文件所在的目录下。 输入命令…

    JavaScript 2023年6月10日
    00
  • Javascript Date toString() 方法

    以下是关于JavaScript Date对象的toString()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的toString()方法 JavaScript的toString()方法返回一个表示日期时间部分的字符串,该字符串格式根据国际标准时间(UTC)而定。该方法不接受任何参数。 下面是使用对象的toString()方法的示例:…

    JavaScript 2023年5月11日
    00
  • js中函数的length是多少

    在JavaScript中,函数有length属性,该属性指示函数的参数数量。length属性用于获取函数定义时写入的参数数目,与实际调用函数时传入的参数数目无关。 例如下面这个函数,它包含3个参数: function exampleFunc(a, b, c) { // function body goes here } 那么这个函数的length值就是3,因…

    JavaScript 2023年5月27日
    00
  • js中递归函数的使用介绍

    JS中递归函数的使用介绍 什么是递归函数? 递归函数是指在函数定义中调用自身的函数。通过使用递归函数,可以将一个大问题逐渐分解为若干个小问题,从而更容易解决。递归函数是一个强有力的工具,它在许多编程语言中广泛使用。 如何使用递归函数? 最简单的递归函数定义只是一个条件判断和一个递归调用。如下所示: function recursiveFunc(param) …

    JavaScript 2023年5月27日
    00
  • js实现登陆与注册功能

    实现登录和注册功能是实现网站用户系统非常重要的一部分。下面是一个基本的js实现登陆与注册的攻略: 1.设计数据库 数据库是用来保存用户信息和验证用户身份的主要存储介质,需要提前设计好数据库的结构并使用相关的数据库技术(如MySQL)进行实现,至少包含用户信息表和用户登录信息表。常见的用户信息表包含加密后的用户名、加密后的密码、用户邮箱、注册时间等字段,示例:…

    JavaScript 2023年5月19日
    00
  • 关于JavaScript的Array数组方法详解

    标题:关于JavaScript的Array数组方法详解 Array.prototype JavaScript中的数组是一种非常重要的数据类型,具有独特的属性和方法。在此处,我们将给出一些有关数组的基础知识,以及一些我们经常需要使用的方法。 基础知识 创建数组 创建一个数组可以使用直接量或者Array构造函数。直接量使用方括号包围数组元素,逗号隔开。例如: l…

    JavaScript 2023年5月27日
    00
  • js日期相关函数总结分享

    JS日期相关函数总结分享 简介 日期在前端开发中非常常见,JavaScript原生提供了许多日期相关的函数,本文将会总结下这些相关函数。 获取Date对象 获取Date对象可以使用以下几个方式: new Date() 使用new Date()方式获取Date对象,可以获取当前日期时间。 const now = new Date(); // 获取当前日期 co…

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