当前位置:首页 > 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));
});

预览多张图片

在上传前预览选中的图片

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);
  });
});

限制上传图片数量和大小

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

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实现拖拽上传

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
分享给朋友:

相关文章

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现驼峰

js实现驼峰

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

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…

js 实现mvc

js 实现mvc

MVC 模式简介 MVC(Model-View-Controller)是一种软件设计模式,将应用程序分为三个核心组件:模型(Model)处理数据和业务逻辑,视图(View)负责展示数据,控制器(Con…

jquery和js

jquery和js

jQuery与JavaScript的区别 jQuery是一个基于JavaScript的库,封装了许多常用的功能,简化了DOM操作、事件处理、动画效果等。JavaScript是原生语言,功能更全面但代码…