当前位置:首页 > JavaScript

js实现图片上传预览

2026-04-04 01:16:17JavaScript

实现图片上传预览的步骤

HTML部分
创建文件输入框和预览区域:

<input type="file" id="uploader" accept="image/*">
<div id="preview"></div>

JavaScript部分
监听文件输入变化并处理预览逻辑:

document.getElementById('uploader').addEventListener('change', function(e) {
  const file = e.target.files[0];
  if (!file) return;

  const reader = new FileReader();
  reader.onload = function(event) {
    const img = document.createElement('img');
    img.src = event.target.result;
    img.style.maxWidth = '300px';
    document.getElementById('preview').appendChild(img);
  };
  reader.readAsDataURL(file);
});

多图预览实现
通过循环处理多个文件:

document.getElementById('uploader').addEventListener('change', function(e) {
  const files = e.target.files;
  const preview = document.getElementById('preview');
  preview.innerHTML = '';

  Array.from(files).forEach(file => {
    if (!file.type.match('image.*')) return;

    const reader = new FileReader();
    reader.onload = function(event) {
      const img = document.createElement('img');
      img.src = event.target.result;
      img.style.maxWidth = '200px';
      img.style.margin = '5px';
      preview.appendChild(img);
    };
    reader.readAsDataURL(file);
  });
});

样式优化建议
添加CSS改善预览效果:

#preview img {
  border: 1px dashed #ccc;
  padding: 5px;
  border-radius: 4px;
  background-color: #f9f9f9;
}

注意事项

  • 文件类型需通过file.type验证
  • 移动端需测试响应式表现
  • 大文件建议添加加载状态提示

扩展功能实现

预览前尺寸校验
添加图片尺寸限制检查:

const img = new Image();
img.onload = function() {
  if (this.width > 1024 || this.height > 1024) {
    alert('图片尺寸不得超过1024x1024');
  } else {
    preview.appendChild(this);
  }
};
img.src = event.target.result;

Base64转Blob上传
转换预览图为可上传格式:

function dataURLtoBlob(dataurl) {
  const arr = dataurl.split(',');
  const mime = arr[0].match(/:(.*?);/)[1];
  const bstr = atob(arr[1]);
  let n = bstr.length;
  const u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new Blob([u8arr], { type: mime });
}

拖拽上传支持
添加拖拽区域交互:

js实现图片上传预览

const dropArea = document.getElementById('preview');
dropArea.addEventListener('dragover', (e) => {
  e.preventDefault();
  dropArea.classList.add('dragover');
});

dropArea.addEventListener('dragleave', () => {
  dropArea.classList.remove('dragover');
});

dropArea.addEventListener('drop', (e) => {
  e.preventDefault();
  dropArea.classList.remove('dragover');
  const files = e.dataTransfer.files;
  // 处理拖拽文件逻辑
});

标签: 图片上传js
分享给朋友:

相关文章

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…