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

yizhihongxing

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日

相关文章

  • JavaScript中直接写undefined的错误及用法剖析

    JavaScript中直接写undefined的错误及用法剖析 在JavaScript中,undefined是一个特殊的值,表示“未定义”的意思。然而,有时候我们会不小心直接写出了undefined,这可能会导致错误。本文将从浅入深地探讨这个问题,并给出一些示例。 常见错误 首先,我们来看看最常见的错误:直接写undefined。 function foo(…

    JavaScript 2023年5月18日
    00
  • asp.net gridview分页:第一页 下一页 1 2 3 4 上一页 最末页

    当我们需要在asp.net网站中实现数据分页展示的功能时,可以使用GridView控件来实现。下面是实现asp.net GridView 分页展示的完整攻略。 安装PagedList.Mvc 我们可以通过Nuget安装PagedList.Mvc,在Manage NuGet Packages界面搜索PagedList.Mvc进行安装。这是一个非常常用的分页库,…

    JavaScript 2023年6月11日
    00
  • JavaScript”模拟事件”的注意要点详解

    下面我将详细讲解“JavaScript模拟事件”的注意要点。 简介 在网页开发中,为了实现交互效果,我们需要触发一些事件,例如鼠标点击,键盘输入等。有些事件无法使用用户的交互来触发,这时我们就需要使用JavaScript来模拟事件,实现相应的交互效果。 注意要点 1. 选择正确的事件类型 在模拟事件前,需要选择正确的事件类型。JavaScript支持的事件类…

    JavaScript 2023年6月10日
    00
  • json格式化/压缩工具 Chrome插件扩展版

    下面是关于“json格式化/压缩工具 Chrome插件扩展版”的详细攻略。 什么是json格式化/压缩工具 Chrome插件扩展版? JSON格式化/压缩工具是一款Chrome浏览器插件扩展。它可以将json格式的数据进行格式化或压缩,方便展示和阅读,在前端开发中有着广泛的应用。 安装和使用 步骤一:下载并安装插件 首先,我们需要在Chrome网上应用商店中…

    JavaScript 2023年5月27日
    00
  • PHP json_encode中文乱码解决方法

    下面是详细讲解“PHP json_encode中文乱码解决方法”的完整攻略: 问题描述 在使用PHP中的json_encode对中文进行编码时,有时会出现中文乱码的情况。这是因为PHP默认使用的字符集为ISO 8859-1,而中文字符需要使用UTF-8字符集进行编码。所以,需要对代码进行一些修改,才能正确地将中文字符编码为JSON格式字符串。 解决方法 要解…

    JavaScript 2023年5月19日
    00
  • JavaScript中强大的操作符使用详解

    JavaScript中强大的操作符使用详解 JavaScript中的操作符可用于进行数学或布尔运算。其中一些操作符非常强大且使用频率也很高。在本文中,我将详细介绍这些操作符及其用法。 算术操作符 算术操作符用于数学运算。 加号操作符(+) 加号操作符可用于执行数学加法或字符拼接。对于两个数字相加的情况,其用法如下: let a = 5, b = 6; let…

    JavaScript 2023年5月17日
    00
  • H5移动端图片压缩上传开发流程

    当今,移动端开发越来越受到人们的关注,而图片上传在大多数场景下都不可或缺。传统的图片上传方式面临的问题主要是图片文件过大,导致上传速度变慢,浪费流量,甚至可能导致服务器崩溃等问题。而今天我们介绍的H5移动端图片压缩上传开发流程,可以有效解决这些问题。 1. 实现原理 H5的File API提供了上传文件的功能,经过一系列转化后,我们可以将图片转化为Base6…

    JavaScript 2023年6月11日
    00
  • 七类蛛蛛陷坑 网站优化中必须要躲避

    七类蛛蛛陷坑 网站优化中必须要躲避 在网站优化的过程中,我们需要尽可能地满足蜘蛛爬行的基本要求,并且规避一些常见的蛛蛛陷坑。以下是七类蛛蛛陷坑及相应的解决方案: 1. 无数据重复 如果您的网站在多个URL中呈现相同的内容,蛛蛛会将其视为重复内容,影响网站的排名。为避免这种情况,应确保通过URL加载的内容不会重复。 解决方案:使用标签中的noindex和nof…

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