基于WebUploader的JS图片上传功能封装与实现

作者:百宝袋

时间:2026-10-22

浏览:213

本文介绍如何使用WebUploader库封装前端图片上传功能。通过配置自动上传、文件限制(单文件1个,大小2MB)及格式白名单,结合客户端图片压缩(宽度300px,小于100KB不压缩)策略,优化上传体验。代码包含初始化配置、错误处理、完成重置及回调逻辑,适用于需要控制图片体积和格式的场景。

文章目录

图片上传功能概述

本文提供了一套基于JavaScript的图片上传实现方案,供开发者参考具体代码细节。

核心功能通过封装JavaScript方法实现,旨在简化上传流程。

WebUploader配置与压缩策略


function uploadImages(picker, url, callback) {
  var img_uploader = WebUploader.create({
    auto: true,
    server: url,
    pick: picker,
    fileNumLimit: 1,
    fileSingleSizeLimit: 2097152, // 2M
    accept: {
      title: 'Images',
      extensions: 'gif,jpg,jpeg,bmp,png',
      // mimeTypes: 'image/*'
    },
    compress: {
      width: 300,
      compressSize: 102400 // < 100kb 不压缩
    },
  })

  var fileType = ['image/jpeg', 'image/jpg', 'image/gif', 'image/png', 'image/bmp']

  img_uploader.on('beforeFileQueued', function(file) {

    fileType.some(function(name) {
      return file.type === name
    })

    ? '' : alert('请上传正确的图片!')

  })

  img_uploader.on('uploadSuccess', function(file, res) {
    callback(file, res)
  })

  img_uploader.on('uploadError', function(file, reason) {
    console.log(reason);
  })

  img_uploader.on('uploadComplete', function(file) {
    img_uploader.reset()
  })

}

在HTML结构中,需要预留用于触发上传选择的容器元素。

HTML触发元素结构


<div id="zTu">图片</div>

JavaScript部分负责初始化WebUploader实例,配置上传参数,并处理上传过程中的事件回调。

初始化与回调处理逻辑


var coverImage; 
initImageUploader();
function initImageUploader(){
  var fileUrl = 你想上传的地址;
  uploadImages('#imagePicker', fileUrl, function(file, res) {
   coverImage = res.url
   $('#zTu').get(0).innerHTML = '<div class="file-item thumbnail"><img style="max-height:180px" src="' + res.url + '" /></div>'
  })
 }

上述内容涵盖了图片上传的核心逻辑,希望能为相关开发工作提供实用参考。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章