全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

spring mvc+localResizeIMG实现HTML5端图片压缩上传

最近在做一个移动端HTML5的应用,使用到了上传功能,起初使用传统的上传方式上传手机拍照的照片,由于手机拍照出来的照片一般都是好几MB,所以上传速度是非常慢的。

在网上找了很久找到了localResizeIMG压缩框架,感觉非常的实用,所以在此分享给大家。

第一步:下载localResizeIMG
localResizeIMG放在github中的,地址是:https://github.com/think2011/localResizeIMG。

第二步:在web工程中导入localResizeIMG相关js
解压localResizeIMG压缩吧,把目录中的dist文件夹拷贝到工程中,我的是放在js目录下。
然后在自己的js中导入jquery和localResizeIMG的js。如:

<script src="<c:url value="/js/JQuery/jquery-1.10.0.min.js"/>"></script> 
<script type="text/javascript" src="<c:url value="/js/lrz/dist/lrz.bundle.js"/>"></script> 

第三步:在自己的上传的input的file框加入onchange事件如下代码
<input  type="file"  id="payfile" name="myfile" style="display:none;" onchange="fileChange(this)" />

在fileChange方法中实现代码的压缩和对压缩后生成的base64异步传到后台

function fileChange(that){ 
  var filepath=$(that).val(); 
  if(filepath=="") 
  { 
   return; 
  } 
  var extStart=filepath.lastIndexOf("."); 
  var ext=filepath.substring(extStart,filepath.length).toUpperCase(); 
  if(".jpg|.png|.bmp|.jpeg".toUpperCase().indexOf(ext.toUpperCase())==-1){ 
   alert("只允许上传jpg、png、bmp、jpeg格式的图片"); 
   return false; 
  } 
  //以图片宽度为800进行压缩 
 lrz(that.files[0], { 
   width: 800 
  }) 
 .then(function (rst) { 
   //压缩后异步上传 
   $.ajax({ 
   url : "<%=request.getContextPath()%>/common/fileUploadPicture", 
   type: "POST", 
   data : { 
    imgdata:rst.base64//压缩后的base值 
   }, 
   dataType:"json", 
   cache:false, 
   async:false, 
   success : function(data) { 
   if(data.success) 
    { 
     alert(data.message);///data.message为上传成功后的文件路径 
    }else{ 
     alert(data.message);///data.message为上传失败原因 
    } 
        
      }, 
  error : function(){ 
    alert("上传失败"); 
      } 
     }); 
   }); 
} 

第四步:spring mvc controller 后台接收base值并解析并保存文件

import sun.misc.BASE64Decoder;//导入的base64的类 
/** 
  * 文件上传 
  */ 
 @ResponseBody 
 @RequestMapping("common/fileUploadPicture") 
 public Object fileUploadPicture(String imgdata, HttpServletRequest request) { 
  LOGGER.info("[文件上传(fileUploadPicture)][params:imgdata=" + imgdata + "]"); 
   BASE64Decoder decoder = new BASE64Decoder(); 
  try { 
   String basePath = request.getRealPath("/upload_files"); 
   string imgPath=basePath+"/test.jpg"; 
   // new一个文件对象用来保存图片,默认保存当前工程根目录 
   File imageFile = new File(imgPath); 
   // 创建输出流 
   FileOutputStream outputStream = new FileOutputStream(imageFile); 
   // 获得一个图片文件流,我这里是从flex中传过来的 
   byte[] result = decoder.decodeBuffer(imgdata.split(",")[1]);//解码 
   for (int i = 0; i < result.length; ++i) { 
    if (result[i] < 0) {// 调整异常数据 
    result[i] += 256; 
   } 
  } 
   outputStream.write(result); 
 
   return new Result(true, imgPath); 
  } catch (AppException e1) { 
   LOGGER.error("[文件上传(fileUpload)-fastdfs][errors:" + e1 + "]"); 
   return new Result(false, "文件上传失败"); 
  } catch (Exception e) { 
   LOGGER.error("[文件上传(fileUpload)][errors:" + e + "]"); 
   return new Result(false, "文件上传失败"); 
  }finally{ 
  outputStream.flush(); 
  outputStream.close(); 
   
  } 
 } 

Result类:

import java.io.Serializable; 
 
public class Result implements Serializable{ 
 private static final long serialVersionUID = 1L; 
 private boolean success; 
 private String message; 
 
 public Result() { 
  success = true; 
 } 
 
 public Result(boolean success, String message) { 
  this.success = success; 
  this.message = message; 
 } 
 
 public boolean isSuccess() { 
  return success; 
 } 
 
 public void setSuccess(boolean success) { 
  this.success = success; 
 } 
 
 public String getMessage() { 
  return message; 
 } 
 
 public void setMessage(String message) { 
  this.message = message; 
 } 
 
 @Override 
 public String toString() { 
  return "Result [success=" + success + ", message=" + message + "]"; 
 } 
 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# spring  # mvc  # localResizeIMG  # html5  # 上传  # SpringMVC+Ajax+拼接html字符串实例代码  # 详解如何配置springboot跳转html页面  # Spring Boot引入swagger-ui 后swagger-ui.html无法访问404的问题  # spring boot 2.x html中引用css和js失效问题及解决方法  # springboot如何使用thymeleaf模板访问html页面  # Springboot访问html页面的教程详解  # 详解SpringBoot+Thymeleaf 基于HTML5的现代模板引擎  # spring boot请求异常处理并返回对应的html页面  # Springmvc返回html页面问题如何解决  # 文件上传  # 自己的  # 放在  # 的是  # 都是  # 手机拍照  # 在此  # 很久  # 是从  # 给大家  # 找了  # 做一个  # 第二步  # 第三步  # 大家多多  # 只允许  # 第四步  # 并保存  # 中传 


相关文章: 建站之星如何优化SEO以实现高效排名?  c++ stringstream用法详解_c++字符串与数字转换利器  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  山东云建站价格为何差异显著?  如何快速搭建个人网站并优化SEO?  linux top下的 minerd 木马清除方法  Python如何创建带属性的XML节点  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  高端云建站费用究竟需要多少预算?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  C++时间戳转换成日期时间的步骤和示例代码  如何高效利用200m空间完成建站?  内网网站制作软件,内网的网站如何发布到外网?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  香港服务器WordPress建站指南:SEO优化与高效部署策略  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  如何在建站宝盒中设置产品搜索功能?  安云自助建站系统如何快速提升SEO排名?  网页设计网站制作软件,microsoft office哪个可以创建网页?  网站制作免费,什么网站能看正片电影?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  如何通过主机屋免费建站教程十分钟搭建网站?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  海南网站制作公司有哪些,海口网是哪家的?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  如何用已有域名快速搭建网站?  兔展官网 在线制作,怎样制作微信请帖?  如何通过VPS建站无需域名直接访问?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何零成本快速生成个人自助网站?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  建站之星如何实现五合一智能建站与营销推广?  如何用腾讯建站主机快速创建免费网站?  教学网站制作软件,学习*后期制作的网站有哪些?  高性价比服务器租赁——企业级配置与24小时运维服务  如何选择高性价比服务器搭建个人网站?  c# await 一个已经完成的Task会发生什么  专业公司网站制作公司,用什么语言做企业网站比较好?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  微信小程序 五星评分(包括半颗星评分)实例代码  大连网站制作公司哪家好一点,大连买房网站哪个好?  建站之星如何通过成品分离优化网站效率?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  香港服务器建站指南:免备案优势与SEO优化技巧全解析  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。