js本地图片预览实现代码

下面是详细讲解 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日

相关文章

  • JS 密码强度校验的正则表达式(简单且好用)

    下面是详细讲解“JS 密码强度校验的正则表达式(简单且好用)”的完整攻略。 1. 背景和需求 现在几乎所有的网站都需要用户进行注册和登录操作,为了保障用户账号的安全,往往都需要在密码设置时进行一定的限制和校验,例如要求密码长度不少于6位,必须包含数字、字母和特殊字符等。 这时候,就可以使用正则表达式来进行密码强度的校验。而在实际应用中,可以针对不同的强度要求…

    JavaScript 2023年6月10日
    00
  • JavaScript实现返回顶部按钮案例

    下面详细讲解一下“JavaScript实现返回顶部按钮案例”的完整攻略。 1. 添加HTML代码和CSS样式 首先在HTML文件中添加返回顶部按钮的HTML代码,例如: <a href="#" id="back-to-top" title="返回顶部"> <i class=&quo…

    JavaScript 2023年6月11日
    00
  • JS日历 推荐

    作为网站的作者,我非常乐意为大家介绍“JS日历 推荐”这个主题的完整攻略。在本文中,我将详细讲述该主题的使用方式、配置参数以及常见问题解决方案,并且提供两条示例说明,帮助大家更好地理解和掌握该主题的应用方法。 一、 使用方式 下载并引入日历组件库 <script src="https://cdn.jsdelivr.net/npm/pikada…

    JavaScript 2023年5月27日
    00
  • JSON 对象未定义错误的解决方法

    JSON 对象未定义错误指的是在 JavaScript 中使用 JSON.parse() 方法解析字符串时出现的错误,该错误通常是由于字符串格式不正确或 JSON 对象中缺少属性导致的。以下是解决该错误的攻略: 1. 检查字符串格式 首先,我们需要检查使用 JSON.parse() 方法时传入的字符串格式是否正确。JSON 格式要求属性名必须加双引号,属性值…

    JavaScript 2023年5月27日
    00
  • JS遍历页面所有对象属性及实现方法

    JS遍历页面所有对象属性及实现方法 在JavaScript中,对象是一个非常重要的概念,通过对象可以将多种类型的数据(属性)和方法(函数)组合到一起,实现对数据的封装和操作。在前端开发中,遍历页面中所有的对象属性是非常常见的需求,本文将介绍如何实现这一功能。 1. for…in循环 for…in循环是JavaScript中遍历对象属性的一种基本方法,…

    JavaScript 2023年5月27日
    00
  • jquery实现浮动在网页右下角的彩票开奖公告窗口代码

    下面我将详细讲解“jquery实现浮动在网页右下角的彩票开奖公告窗口代码”的攻略。 基本思路 我们的目标是实现一个浮动在网页右下角的彩票开奖公告窗口。具体实现思路如下: 在页面底部右下角添加一个固定宽度和高度的 div 元素,设置其 position 属性为 fixed,bottom 和 right 属性为 0,这样就可以让该元素始终浮动在页面的右下角。 在…

    JavaScript 2023年6月11日
    00
  • JavaScript中的 new 命令

    当使用new命令创建一个对象时,实际上进行了以下操作: 创建一个空的Javascript对象,作为新创建的对象实例 将this指向该对象 执行函数体内的代码,即对该对象进行初始化 返回新创建的对象,如果函数返回了一个object类型的值,则返回该对象。否则返回上述新创建的对象 示例1:创建一个Person类对象 function Person(name, a…

    JavaScript 2023年6月10日
    00
  • jQuery 1.5.1 发布,全面支持IE9 修复大量bug

    jQuery 1.5.1 是一款流行的 JavaScript 库,它提供了便捷的 API 和强大的功能,可以让开发人员更加轻松地操作网页中的元素,处理事件等等。对于使用 jQuery 的开发人员来说,版本更新是必不可少的,因为每个版本都会修复一些 bug,增加新的功能。下面我来详细讲解一下“jQuery 1.5.1 发布,全面支持IE9 修复大量bug”的完…

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