当前位置: 首页 > java >正文

H5项目实现图片压缩上传——2025-06-04

1. 图片压缩处理

前提:安装compressorjs

使用 compressorjs 库进行图片压缩,主要配置如下:

handleCompress(file) {new Compressor(file.file, {quality: 0.6,maxWidth: 1920,maxHeight: 1920,convertSize: 1024 * 1024,success: compressedFile => {const newFile = new File([compressedFile], file.file.name, {type: compressedFile.type,lastModified: Date.now()});this.onRead(newFile);},error: err => {console.error(err);this.$toast('图片压缩失败');}});
}

压缩配置说明:

  • quality: 0.6 - 压缩质量为60%
  • maxWidth: 1920 - 最大宽度限制
  • maxHeight: 1920 - 最大高度限制
  • convertSize: 1MB - 转换阈值

2. 文件大小限制

代码会检查文件大小,超过限制会提示错误:

<van-uploader:after-read="handleCompress"accept="image/*"multiple:max-size="10 * 1024 * 1024"@oversize="onOversize"
>
onOversize() {this.$toast('文件大小不能超过10MB');
}

3. 文件上传处理

压缩后的文件通过 FormData 进行上传:

onRead(file) {var formData = new FormData();if (file instanceof Array) {// 判断是否是数组file.map(element => {formData.append('file', element.file);});} else {formData.append('files', file);}formData.append('subject_id', this.id);formData.append('file_note', '');formData.append('name', file.name);uploadSourceFile(formData).then(res => {if (res.code === 0) {this.$toast({message: res.msg,position: 'middle'});this.activeTab = 'bytime';this.activeTimeNames = 0;this.getStatistics();} else {this.$toast({message: res.msg,position: 'middle'});}})

http://www.xdnf.cn/news/11921.html

相关文章:

  • 无法通过windows功能控制面板自动安装或卸载windows server角色或功能
  • 低成本奶泡棒解决方案WD8001功能说明
  • Hadoop企业级高可用与自愈机制源码深度剖析
  • docker的基本命令
  • AI界面遭劫持:Open WebUI被滥用于挖矿程序与隐蔽AI恶意软件
  • 如何快速找出某表的重复记录 - 数据库专家面试指南
  • 【力扣】3403. 从盒子中找出字典序最大的字符串 I
  • 判断:有那种使用了局部变量的递归过程在转换成非递归过程时才必须使用栈
  • AI批改作文的软件推荐:提升写作效率的智能工具
  • 厂商与经销商供应链数据协同:策略、实践与深度价值挖掘
  • 在WPS中如何启用宏VBA wps.vba.exe下载和安装
  • 【JVM】Java类加载机制
  • Python 多进程编程全面学习指南
  • Unity 大型手游碰撞性能优化指南
  • Axure高保真LayUI框架 V2.6.8元件库
  • [蓝桥杯]卡片换位
  • Modbus转EtherNET IP网关开启节能改造新范式
  • 细说C语言将格式化输出到字符串的函数sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_l
  • IEC 61347-1:2015 灯控制装置安全标准详解
  • [Java 基础]创建人类这个类小练习
  • Python应用函数的定义与调用(一)
  • AI制药专利战:生命权VS专利权,谁在定价你的生命?
  • React Native开发鸿蒙运动健康类应用的项目实践记录
  • C++--vector的使用及其模拟实现
  • PaddleOCR v3.0.0 编译FAQ
  • itop-3568开发板机器视觉opencv开发手册-图像绘制-画线
  • UE接口通信
  • 代码随想录|动态规划|50编辑距离
  • Linux:理解库制作与原理
  • 《IDEA 高效开发:自定义类/方法注释模板详解》