JavaScript进阶之前端文件上传和下载示例详解

JavaScript进阶之前端文件上传和下载示例详解

本文将详细讲解前端文件上传和下载的过程和实现方法,包括如何使用HTML5 FormData API、AJAX和原生JavaScript来完成文件上传和下载功能的开发。

文件上传

文件上传是我们日常开发中常用的功能之一。下面我们通过两个示例来讲解文件上传的实现。

示例1:上传图片并预览

  1. HTML部分
<input type="file" id="uploadInput" accept="image/*">
<img id="previewImg" src="" width="200" height="200">

其中,input标签的type属性为file,表示这是一个文件上传的输入框。accept属性的值为image/*,表示只能上传图像类型的文件。

  1. JavaScript部分
let uploadInput = document.getElementById('uploadInput');
let previewImg = document.getElementById('previewImg');

uploadInput.addEventListener('change', function() {
  let file = uploadInput.files[0];
  if (file) {
    let reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = function() {
      previewImg.src = reader.result;
    };
  }
});

上述代码首先获取了input标签和img标签,然后添加了change事件监听。在事件处理函数中,通过files属性获取了文件对象,使用FileReader对象读取文件内容,最后通过img标签将预览图像展示出来。

示例2:上传表单数据和文件

  1. HTML部分
<form id="uploadForm">
  <input type="text" name="title">
  <input type="file" name="file">
  <button type="submit">提交</button>
</form>

这是一个普通的表单,其中包含了一个文本输入框和一个文件上传输入框。

  1. JavaScript部分
let uploadForm = document.getElementById('uploadForm');

uploadForm.addEventListener('submit', function(event) {
  event.preventDefault();
  let formData = new FormData(uploadForm);
  let xhr = new XMLHttpRequest();
  xhr.open('POST', 'upload.php');
  xhr.onload = function() {
    if (xhr.status === 200) {
      console.log(xhr.responseText);
    }
  };
  xhr.send(formData);
});

上述代码中,首先通过FormData对象获取表单数据和文件数据,然后通过XMLHttpRequest对象发送POST请求,最后在请求响应成功后打印出响应文本。

文件下载

文件下载是另一个常见的前端功能。下面给出一个示例来讲解文件下载的实现。

示例3:下载Excel文件

function downloadExcel(filename) {
  let xhr = new XMLHttpRequest();
  xhr.open('GET', 'download.php?filename=' + filename);
  xhr.responseType = 'blob';
  xhr.onload = function() {
    if (xhr.status === 200) {
      let blob = xhr.response;
      let link = document.createElement('a');
      link.href = window.URL.createObjectURL(blob);
      link.download = filename;
      link.click();
    }
  };
  xhr.send();
}

上述代码中,通过XMLHttpRequest对象发送一个GET请求,请求的URL包含待下载的文件名。指定响应的responseType属性为blob,表示响应是一个二进制数据。在响应成功后,利用window.URL.createObjectURL方法获取下载链接,创建一个a标签,设置其hrefdownload属性,最后利用click方法模拟用户单击下载链接,完成文件下载功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript进阶之前端文件上传和下载示例详解 - Python技术站

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

相关文章

  • 当json键为数字时的取值方法解析

    当JSON的键为数字时,我们可以使用以下三种方式来取值: 方式一:使用点号加双引号,将数字键转换成字符串来访问。 例如,在下面的JSON数据中,键名为数字1和2: { "1": "Apple", "2": "Banana" } 我们可以通过以下方式访问它们: – Apple可以这…

    JavaScript 2023年5月27日
    00
  • c# 实现控件(ocx)中的事件详解

    下面是“c# 实现控件(ocx)中的事件详解”的完整攻略: 1. 什么是控件(ocx) 控件(ocx)是一种Microsoft公司开发的一种通用控件技术,主要应用于Windows操作系统中。它可以被嵌入到其他应用程序中,实现特定的功能,例如多媒体播放器、数据库控件等。控件(ocx)可以使用不同编程语言来开发,如C++、VB6、C#等。 2. 创建控件(ocx…

    JavaScript 2023年5月28日
    00
  • 详解JavaScript UTC时间转换方法

    详解JavaScript UTC时间转换方法 在JavaScript中,我们通常使用的日期对象保存的是本地时间。但是,在跨时区使用的情况下,UTC时间经常会被使用。要将本地时间转换为UTC时间,或者将UTC时间转换为本地时间,可以使用JavaScript提供的函数来完成。下面介绍JavaScript UTC时间转换的方法。 1. new Date(Date.…

    JavaScript 2023年5月27日
    00
  • 关于二级域名下使用一级域名下的COOKIE的问题

    关于二级域名下使用一级域名下的COOKIE的问题,涉及到跨域问题和COOKIE同源策略问题,需要进行一定的设置来保证正常的COOKIE使用。 解决方案 一种通用的解决方案是通过在一级域名下设置COOKIE的domain为一级域名的方式来解决跨域问题。具体步骤如下: 在一级域名下设置COOKIE时,需要设置domain为一级域名: document.cooki…

    JavaScript 2023年6月11日
    00
  • laydate.js日期时间选择插件

    “laydate.js日期时间选择插件”是一个常用的JavaScript插件,它可以方便地帮助用户在网页上进行日期和时间的选择。 以下是关于怎样在网页上使用”laydate.js日期时间选择插件”的详细攻略: 安装 在使用”laydate.js日期时间选择插件”之前,需要先将它安装到网页中。有两种方式可以安装该插件: 通过CDN引入。使用该方式只需引入以下代…

    JavaScript 2023年5月27日
    00
  • Javascript Math PI 属性

    JavaScript中的Math.PI属性是一个常数,表示圆周率π的值。以下是关于Math.PI属性的完整攻略,含两个示例。 Math对象的PI属性 JavaScript对象中的PI属性是一个常数,表示圆周率π的值。 下面是PI属性语法: Math.PI 下面是一个PI属性的示例: console.log(Math.PI); // 输出 3.14159265…

    JavaScript 2023年5月11日
    00
  • JavaScript中各种二进制对象关系的深入讲解

    JavaScript中各种二进制对象关系的深入讲解 Buffer 在 Node.js 中,Buffer 类被用来在 TCP 流、文件系统操作、以及其他上下文中处理二进制数据流。 创建 Buffer Buffer 可以通过多种方式创建,在以下的代码片段中,我们来看如何创建一个空的 Buffer 对象。 const buf1 = Buffer.alloc(5);…

    JavaScript 2023年5月27日
    00
  • 浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序

    浅谈JS函数三种定义方式 在JavaScript中,函数也是对象。定义函数的方法有三种:函数声明、函数表达式和Function构造函数。它们的语法如下: 函数声明 function fnDeclaration(arg1, arg2, …) { // 函数体 } 函数声明是函数最基本的定义方式。它是在函数执行前就会被解析并创建,所以可以先调用函数再声明函数…

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