当前位置:首页 > JavaScript

js实现多张

2026-02-01 08:21:21JavaScript

JavaScript实现多张图片上传

使用HTML5的File API和FormData对象实现多张图片上传

<input type="file" id="imageUpload" multiple accept="image/*">
<button id="uploadBtn">上传图片</button>
document.getElementById('uploadBtn').addEventListener('click', function() {
  const files = document.getElementById('imageUpload').files;
  if (files.length === 0) return;

  const formData = new FormData();
  for (let i = 0; i < files.length; i++) {
    formData.append('images[]', files[i]);
  }

  fetch('/upload', {
    method: 'POST',
    body: formData
  })
  .then(response => response.json())
  .then(data => console.log('上传成功', data))
  .catch(error => console.error('上传失败', error));
});

预览多张图片

在上传前预览选中的图片

js实现多张

const fileInput = document.getElementById('imageUpload');
const previewContainer = document.createElement('div');
document.body.appendChild(previewContainer);

fileInput.addEventListener('change', function() {
  previewContainer.innerHTML = '';
  Array.from(this.files).forEach(file => {
    if (!file.type.match('image.*')) return;

    const reader = new FileReader();
    reader.onload = function(e) {
      const img = document.createElement('img');
      img.src = e.target.result;
      img.style.height = '100px';
      previewContainer.appendChild(img);
    };
    reader.readAsDataURL(file);
  });
});

限制上传图片数量和大小

添加验证逻辑控制上传条件

js实现多张

function validateFiles(files) {
  const maxSize = 5 * 1024 * 1024; // 5MB
  const maxCount = 10;

  if (files.length > maxCount) {
    alert(`最多上传${maxCount}张图片`);
    return false;
  }

  for (let file of files) {
    if (file.size > maxSize) {
      alert(`${file.name}超过大小限制`);
      return false;
    }
  }

  return true;
}

显示上传进度

使用XMLHttpRequest显示上传进度

function uploadWithProgress(files) {
  const xhr = new XMLHttpRequest();
  const formData = new FormData();

  files.forEach(file => formData.append('images[]', file));

  xhr.upload.addEventListener('progress', function(e) {
    const percent = Math.round((e.loaded / e.total) * 100);
    console.log(`上传进度: ${percent}%`);
  });

  xhr.open('POST', '/upload');
  xhr.send(formData);
}

使用第三方库简化操作

使用Dropzone.js实现拖拽上传

<link rel="stylesheet" href="https://unpkg.com/dropzone@5/dist/min/dropzone.min.css">
<script src="https://unpkg.com/dropzone@5/dist/min/dropzone.min.js"></script>

<div id="myDropzone" class="dropzone"></div>
Dropzone.options.myDropzone = {
  url: "/upload",
  paramName: "images",
  maxFilesize: 5, // MB
  acceptedFiles: "image/*",
  addRemoveLinks: true,
  parallelUploads: 3,
  init: function() {
    this.on("success", function(file, response) {
      console.log("文件上传成功", file.name);
    });
  }
};

标签: 多张js
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…