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日

相关文章

  • javascript写一个ajax自动拦截并下载数据代码实例

    这里给出一个完整的“javascript写一个ajax自动拦截并下载数据”的攻略。 1. 理解AJAX AJAX全称为Asynchronous Javascript And XML,即异步JavaScript和XML,是一种在Web页面中实现异步数据交互的技术。使用AJAX可以在不刷新整个页面的情况下,通过后台异步加载数据,实现局部数据的更新。 2. 如何实…

    JavaScript 2023年6月10日
    00
  • javascript字符串函数汇总

    JavaScript字符串函数汇总 本攻略为您详细介绍了 JavaScript 中常用的字符串函数,包括基本字符串方法、正则表达式方法、以及 ES6 中新增的字符串方法。通过掌握本文的内容,您将能够更加熟练地操作字符串。 基本字符串方法 1. length 属性 JavaScript 中的字符串都有一个 length 属性,表示该字符串的长度。示例如下: v…

    JavaScript 2023年5月18日
    00
  • JS实现动态倒计时功能(天数、时、分、秒)

    实现动态倒计时功能是Web开发中常见的需求之一,JS是实现这一功能的重要工具之一。下面我会为你详细讲解如何使用JS实现动态倒计时,并提供两个详细的示例说明。 编写HTML结构 首先需要在HTML页面中添加需要倒计时的元素,可以使用HTML5中的<time>元素来显示时间。在这个例子中,我们将需要倒计时的元素放在<div>标签中。 &l…

    JavaScript 2023年5月27日
    00
  • javascript使用Blob对象实现的下载文件操作示例

    下面是关于“JavaScript使用Blob对象实现的下载文件操作示例”的完整攻略。 什么是Blob对象 Blob对象表示一段二进制数据,可以是图片、音频、文本等格式的数据。可以通过创建Blob对象来使这些数据能够被其他API所使用。在前端的文件操作中,我们常常会使用Blob对象作为操作的中转对象。 创建Blob对象的方法如下: const blob = n…

    JavaScript 2023年5月27日
    00
  • js实现touch移动触屏滑动事件

    首先,在JS中实现touch移动事件需要以下步骤: 1.监听touch事件,获取移动的距离及方向2.根据移动的距离及方向判断滑动操作:是垂直滑动还是水平滑动3.根据滑动的距离改变页面元素的位置4.结束滑动后执行相应的操作,比如改变元素的样式或者执行相关动画 下面是JS实现touch移动事件的完整示例: <!DOCTYPE html> <ht…

    JavaScript 2023年6月11日
    00
  • 基于JavaScript实现前端文件的断点续传

    首先,前端实现文件的上传需要使用HTML5新增的文件上传API,即File和FileReader对象。而实现文件的断点续传可以通过Ajax方式向后台传递文件分块,后台接口则可以将分块数据合并成完整的文件。 以下是一个完整的前端基于JavaScript实现文件的断点续传的攻略: 1. HTML页面设计 在HTML页面中需要添加一个文件上传的表单,和一个进度条用…

    JavaScript 2023年5月27日
    00
  • JavaScript操作文件_动力节点Java学院整理

    JavaScript操作文件攻略 在JavaScript中,我们可以使用File API来操作文件,包括读取、写入、删除等操作。本攻略将为您提供完整的JavaScript操作文件方案。 读取文件 我们可以使用FileReader对象来读取文件中的内容。以下是读取文件的示例代码: const fileInput = document.getElementByI…

    JavaScript 2023年5月27日
    00
  • JavaScript如何获取到导航条中HTTP信息

    要获取网站的HTTP信息,可以通过JavaScript中的内置对象window对象来获取。具体的方法包括以下几个步骤: 1.使用window.location对象获取当前页面的URL地址; 2.通过获取到的URL地址字符串,使用location对象的属性来获取端口、协议、主机名等HTTP信息。 以下是用代码实现上述步骤的示例: // 获取当前页面的URL地址…

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