js本地图片预览实现代码

yizhihongxing

下面是详细讲解 JavaScript 实现本地图片预览的完整攻略。

1. 通过 <input type="file"> 获取图片原始信息

要在页面中实现本地图片预览的功能,首先需要在 HTML 中添加一个带有 type="file" 属性的 <input> 元素,用于获取用户选择的文件信息。

<input type="file" id="imageInput">

用户选择了图片文件之后,可以通过 JavaScript 监听 change 事件,获取文件的原始信息。

const imageInput = document.getElementById('imageInput');

imageInput.addEventListener('change', function() {
  // 获取用户选择的文件列表
  const fileList = imageInput.files;

  // 读取第一张图片
  const reader = new FileReader();
  reader.readAsDataURL(fileList[0]);

  // 加载成功后,将图片预览到页面中
  reader.onload = function() {
    const imagePreview = document.getElementById('imagePreview');
    imagePreview.src = reader.result;
  };
});

上述代码中,通过 FileReader 对象读取文件的二进制数据,并将其转换为 data URL 形式的字符串,然后用 img 标签的 src 属性将其展示到页面上。

2. 限制图片大小和类型

在实际应用中,为了保证系统的稳定和安全,需要对用户上传的图片进行限制,比如限制上传的图片大小和类型。

以下是一个示例代码,可以限制上传的图片大小不超过 5MB,且只能上传 jpgjpegpng 格式的图片。

const MAX_IMAGE_SIZE = 5 * 1024 * 1024; // 5MB
const ALLOWED_IMAGE_TYPES = ['image/jpeg', 'image/png'];

imageInput.addEventListener('change', function() {
  // 获取用户选择的文件列表
  const fileList = imageInput.files;

  const file = fileList[0];
  const fileType = file.type;
  const fileSize = file.size;

  // 判断文件类型是否允许上传
  if (!ALLOWED_IMAGE_TYPES.includes(fileType)) {
    alert('仅支持上传jpg、jpeg、png格式的图片!');
    return;
  }

  // 判断文件大小是否超过限制
  if (fileSize > MAX_IMAGE_SIZE) {
    alert('上传的图片文件不能超过5MB!');
    return;
  }

  // ...
});

上述代码中,通过 file.type 获取文件的 MIME 类型,通过 file.size 获取文件的大小,然后与预设的限制值进行比较,进行限制。

3. 实现多张图片预览

除了展示单张图片之外,还可以实现多张图片的预览功能。

以下是一个示例代码,可以预览用户选择的多张图片,并在点击删除按钮时,将选定的图片从列表中删除。

<input type="file" id="imageInput" multiple>
<div id="imagesPreview"></div>
const imageInput = document.getElementById('imageInput');
const imagesPreview = document.getElementById('imagesPreview');

imageInput.addEventListener('change', function() {
  // 获取用户选择的文件列表
  const fileList = imageInput.files;

  for (let i = 0; i < fileList.length; i++) {
    const file = fileList[i];

    // 判断文件类型是否允许上传
    if (!ALLOWED_IMAGE_TYPES.includes(file.type)) {
      alert('仅支持上传jpg、jpeg、png格式的图片!');
      continue;
    }

    // 判断文件大小是否超过限制
    if (file.size > MAX_IMAGE_SIZE) {
      alert('上传的图片文件不能超过5MB!');
      continue;
    }

    // 读取图片数据,显示预览
    const reader = new FileReader();
    reader.readAsDataURL(file);

    reader.onload = function() {
      // 创建删除按钮
      const deleteButton = document.createElement('button');
      deleteButton.innerHTML = '删除';
      deleteButton.addEventListener('click', function() {
        imagesPreview.removeChild(imageContainer);
      });

      // 创建图片容器
      const imageContainer = document.createElement('div');
      imageContainer.appendChild(deleteButton);

      // 创建图片元素
      const imagePreview = document.createElement('img');
      imagePreview.src = reader.result;
      imageContainer.appendChild(imagePreview);

      // 添加到图片列表中
      imagesPreview.appendChild(imageContainer);
    };
  }
});

上述代码中,使用 fileList.length 循环遍历用户选择的文件列表。对于每个文件,在读取成功后,创建一个图片容器,将图片预览和删除按钮添加到容器中,并将容器添加到图片列表中。

至此,JavaScript 实现本地图片预览的完整攻略结束。感谢阅读!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js本地图片预览实现代码 - Python技术站

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

相关文章

  • 11款基于Javascript的文件管理器

    我来为您讲解关于“11款基于JavaScript的文件管理器”的完整攻略。 1. 背景介绍 JavaScript是一种流行的编程语言,同时也是前端开发中不可或缺的一部分。文件管理器是一个非常重要的工具,能够帮助用户对文件进行管理,这篇攻略就是为了介绍一些基于JavaScript的文件管理器。 2. 技术细节 下面是11款基于JavaScript的文件管理器,…

    JavaScript 2023年5月27日
    00
  • JavaScript动态生成二维码图片

    生成二维码图片是前端开发中经常会需要用到的功能,而JavaScript可以通过借助第三方库来轻松实现它。下面介绍一下如何使用JavaScript动态生成二维码图片的完整攻略。 安装第三方库 在实现动态生成二维码图片之前,需要使用第三方库来处理二维码生成的逻辑。这里介绍一个常用的库 qrcodejs2,它可以将一个字符串生成为对应的二维码图片。 可以通过npm…

    JavaScript 2023年6月11日
    00
  • JavaScript实现计算圆周率到小数点后100位的方法示例

    首先我们需要知道如何计算圆周率。圆周率是一个无理数,用希腊字母π表示,它的值约为3.14159265358979323846。 对于JavaScript实现计算圆周率到小数点后100位的方法,我们可以使用莱布尼兹公式来完成,公式如下: π/4=1-1/3+1/5-1/7+1/9-1/11+… 其中,π是我们要求的圆周率。 在实现过程中,我们将公式求和10…

    JavaScript 2023年5月28日
    00
  • Javascript Date getDay() 方法

    以下是关于JavaScript Date对象的getDay()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的getDay()方法 JavaScript Date对象的getDay()方法返回一个星期中的某一天(0-6)。该方法可用获取当前日期的星期几。 下是使用Date对象的getDay()方法的示例: var date = new…

    JavaScript 2023年5月11日
    00
  • JavaScript比较两个对象是否相等的方法

    如何比较两个JavaScript对象是否相等是一个相对复杂的问题。JavaScript提供了几种方法来比较两个对象,但每种方法都有自己的限制和局限性。这里将介绍其中三种最常用的方法来比较对象是否相等。 1. 使用JSON.stringify()方法 JSON.stringify()方法是将一个JavaScript对象转换为一个JSON字符串的方法。我们可以使…

    JavaScript 2023年5月27日
    00
  • 原生js的ajax和解决跨域的jsonp(实例讲解)

    关于原生JS的AJAX和JSONP的介绍和实例讲解,我将从以下三个部分来进行详细解答。 AJAX的介绍和使用方法 AJAX全称为Asynchronous JavaScript and XML(异步的JavaScript和XML),是一种前端常用数据交换技术,能够实现页面异步刷新,避免了页面重新刷新的效果,减轻服务器对请求的压力。使用AJAX技术可以更好的优化…

    JavaScript 2023年5月27日
    00
  • bootstrap fileinput 上传插件的基础使用

    下面是针对Bootstrap FileInput上传插件的基础使用攻略。 介绍 Bootstrap FileInput是一款基于Bootstrap框架的文件上传插件,支持多文件上传、进度条展示、预览等功能,可以应用于各种网站和应用中。在本文中,我们将介绍Bootstrap FileInput的基础用法,包括引入和配置等方面。 引入文件 首先,在你的HTML文…

    JavaScript 2023年5月28日
    00
  • JavaScript代码编写中各种各样的坑和填坑方法

    JavaScript是一门广泛使用的语言,但在编写代码时会遇到各种各样的坑。以下是JavaScript代码编写中的一些常见坑和对应的填坑方法: 坑1:变量作用域问题 JavaScript中的变量作用域是函数级别的,而不是基于代码块的。如果在函数外部声明变量,则变量将成为全局变量,可能会导致变量的混淆和意外赋值。填坑方法是在函数内部使用var、let或cons…

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